summaryrefslogtreecommitdiff
path: root/include/administration.hpp
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-08-09 08:33:08 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-08-09 08:33:08 +0200
commit5d34aff5888d3f0c624251f15bedb96c347978d6 (patch)
tree69a49651271d645ca7eaa114cb1830bf759c0930 /include/administration.hpp
parentb94a7ae06b20d550c727d5192cea8baf3e8fb641 (diff)
refactors
Diffstat (limited to 'include/administration.hpp')
-rw-r--r--include/administration.hpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/include/administration.hpp b/include/administration.hpp
new file mode 100644
index 0000000..9506246
--- /dev/null
+++ b/include/administration.hpp
@@ -0,0 +1,70 @@
+#pragma once
+
+#include "config.hpp"
+#include "simclist.h"
+
+typedef struct
+{
+ char id[16];
+ char name[64];
+ char address1[128];
+ char address2[128];
+ char country[128];
+ char taxid[32];
+ char businessid[32];
+ char email[64];
+ char phone_number[16];
+ char bank_account[32];
+} contact;
+
+typedef enum
+{
+ RUNNING,
+ PAUSED,
+ CANCELLED,
+} project_state;
+
+typedef struct
+{
+ char id[16];
+ char description[64];
+ project_state state;
+ time_t start_date;
+ time_t end_date;
+} project;
+
+typedef struct
+{
+ contact company_info;
+ s32 next_id;
+ char path[4096];
+ char program_version[10];
+ char country_code[2];
+ list_t contacts;
+ list_t projects;
+ // invoices
+ char ai_service[16];
+ char ai_key[32];
+ char email_service[16];
+ char email_key[32];
+} administration;
+
+void administration_create();
+void administration_destroy();
+
+char* administration_get_file_path();
+s32 administration_create_id();
+
+bool administration_remove_contact(contact data);
+bool administration_create_contact(contact data);
+bool administration_update_contact(contact data);
+u32 administration_get_contact_count();
+u32 administration_get_contacts(u32 page_index, u32 page_size, contact* buffer);
+
+void administration_cancel_project(project data);
+bool administration_remove_project(project data);
+bool administration_create_project(project data);
+bool administration_update_project(project data);
+char* administration_project_get_status_string(project data);
+u32 administration_get_project_count();
+u32 administration_get_projects(u32 page_index, u32 page_size, project* buffer); \ No newline at end of file