#pragma once #include "Model/Items.hpp" #include "Model/TransactionsModel.hpp" #include #include #include class Project { public: ItemList Products; ItemList Factories; ItemList Customers; private: std::filesystem::path mRootPath; std::string mRootPathString; std::string mName; TransactionModel mDb; public: /// Load the project from a directory containing the cplt_project.json file. Project(const std::filesystem::path& rootPath); /// Create a project with the given name in the given path. Note that the path should be a directory that will contain the project files once created. /// This function assumes the given directory will exist and is empty. Project(std::filesystem::path rootPath, std::string name); /// Path to a *directory* that contains the project file. const std::filesystem::path& GetPath() const; const std::string& GetPathString() const; const std::string& GetName() const; void SetName(std::string name); const TransactionModel& GetTransactionsModel() const; TransactionModel& GetTransactionsModel(); Json::Value Serialize(); void WriteToDisk(); };