#pragma once #include "std_lib_inc.h" #include "User.h" #include "Task.h" #include "Assignment.h" #ifndef ENVIRONMENT_H #define ENVIRONMENT_H using models::User; using models::Task; using models::Assignment; namespace util { class Manager { private: static Manager* INSTANCE; map users; map tasks; vector assignments; int user_id_index; int task_id_index; string filename; Manager(); void update_user_id_index(); void update_task_id_index(); public: static Manager& get_instance(); void save(); void update_indexes(); int get_user_id(); int get_task_id(); vector get_users() const; vector get_tasks() const; vector get_assignments(); User* get_user(const int& id); Task* get_task(const int& id); vector get_assignments_for_user(const int& id); bool assignment_exists(const int& user_id, const int& task_id); void add_user(User* user); void add_task(Task* task); void add_assignment(Assignment* as); void del_user(const int& id); void del_task(const int& id); void del_assignment(Assignment& as); }; } // util #endif // ENVIRONMENT_H