#ifndef FILE_MANAGER_H #define FILE_MANAGER_H #include #include "models/ward.h" #include "models/patient.h" #include "models/doctor.h" #include "models/medicine.h" #include "models/department.h" #include "models/patient_case.h" #include "models/check.h" #include "models/payment.h" #include "models/settlement.h" #include "utils/linkedlist.hpp" class FileManager { public: // Basic file operations static bool readTextFile(const std::string& path, std::string& outContent, std::string& outError); static bool writeTextFile(const std::string& path, const std::string& content, std::string& outError); static bool createFile(const std::string& path, const std::string& initialContent, std::string& outError); static bool deleteFile(const std::string& path, std::string& outError); // JSON field operation: remove a field from root object or array of objects static bool deleteJsonField(const std::string& path, const std::string& fieldName, std::string& outError); // Ward/Bed <-> file static bool loadWardListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool saveWardListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); // Patient <-> file static bool loadPatientListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool savePatientListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); // Doctor <-> file static bool loadDoctorListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool saveDoctorListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); // Medicine <-> file static bool loadMedicineListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool saveMedicineListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); // Department <-> file static bool loadDepartmentListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool saveDepartmentListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); // PatientCase <-> file static bool loadPatientCaseListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool savePatientCaseListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); // Check <-> file static bool loadCheckListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool saveCheckListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); // Payment <-> file static bool loadPaymentListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool savePaymentListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); // Settlement <-> file static bool loadSettlementListFromFile(const std::string& path, LinkedList& outList, std::string& outError); static bool saveSettlementListToFile(const std::string& path, const LinkedList& list, std::string& outError, int indent = 2); }; #endif