summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@mailbox.org>2025-12-27 17:25:41 +0100
committerAldrik Ramaekers <aldrik@mailbox.org>2025-12-27 17:25:41 +0100
commit7c3a271feea4b3693bf93a47924f7c682585e179 (patch)
treeb72a1f3f2780f9f22f679e18f5d1780541cc040b /include
parent28c730a2e35ce81634dd4d47bf8e92e4552ec17c (diff)
mail provider settings ui
Diffstat (limited to 'include')
-rw-r--r--include/administration.hpp16
-rw-r--r--include/file_templates.hpp4
-rw-r--r--include/importer.hpp9
3 files changed, 28 insertions, 1 deletions
diff --git a/include/administration.hpp b/include/administration.hpp
index 31044f5..4f276ad 100644
--- a/include/administration.hpp
+++ b/include/administration.hpp
@@ -400,6 +400,19 @@ typedef struct
char api_key_public[MAX_LEN_API_KEY];
} ai_service;
+typedef enum
+{
+ EMAIL_PROVIDER_MAILERSEND = 0,
+
+ EMAIL_PROVIDER_END,
+} email_provider;
+
+typedef struct
+{
+ email_provider provider;
+ char api_key[MAX_LEN_API_KEY];
+} email_service;
+
typedef struct
{
time_t timestamp;
@@ -433,6 +446,7 @@ typedef struct
// Service providers.
ai_service ai_service;
+ email_service email_service;
} ledger;
// Add/Update result codes.
@@ -501,10 +515,12 @@ namespace administration {
char* get_default_currency();
time_t get_default_invoice_expire_duration();
ai_service get_ai_service();
+ email_service get_email_service();
void set_file_path(char* path);
void set_next_id(s32 nr);
void set_next_sequence_number(s32 nr);
void set_ai_service(ai_service provider);
+ void set_email_service(email_service provider);
void create_income_statement(income_statement* statement);
bool can_create_invoices();
diff --git a/include/file_templates.hpp b/include/file_templates.hpp
index 15637a7..c5e0191 100644
--- a/include/file_templates.hpp
+++ b/include/file_templates.hpp
@@ -71,6 +71,10 @@ namespace file_template {
" <PublicKey>{{AI_SERVICE_PUBLIC_KEY}}</PublicKey>\n"
" <Model>{{AI_SERVICE_MODEL}}</Model>\n"
" </AIService>\n"
+ " <EmailService>\n"
+ " <Provider>{{EMAIL_SERVICE_PROVIDER}}</Provider>\n"
+ " <PublicKey>{{EMAIL_SERVICE_KEY}}</PublicKey>\n"
+ " </EmailService>\n"
"</Administration>";
static const char* peppol_invoice_tax_subtotal_template =
diff --git a/include/importer.hpp b/include/importer.hpp
index 1d97c12..8db70ef 100644
--- a/include/importer.hpp
+++ b/include/importer.hpp
@@ -30,7 +30,6 @@ typedef uint32_t i_err;
namespace importer {
-
typedef enum
{
IMPORT_STARTING,
@@ -71,10 +70,18 @@ namespace importer {
bool (*get_available_models)(model_list_request* buffer);
} ai_provider_impl;
+ typedef struct
+ {
+ char* provider_name;
+ bool (*send_email)(char* sender, char* recipients, u32 recipients_count, const char* subject, const char* text);
+ } email_provider_impl;
+
const char* error_to_string(i_err error);
const char* status_to_string(status status);
ai_provider_impl get_ai_provider_implementation(ai_provider provider);
+ email_provider_impl get_email_provider_implementation(email_provider provider);
+
invoice_request* ai_document_to_invoice(char* file_path);
model_list_request* ai_get_available_models(ai_provider service);
} \ No newline at end of file