#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: Manager(const Manager&) = delete; Manager& operator=(const Manager&) = delete; 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(int id); Task* get_task(int id); vector get_assignments_for_user(int user_id); vector get_assignments_for_task(int task_id); bool assignment_exists(int user_id, int task_id); void add_user(User* user); void add_task(Task* task); void add_assignment(Assignment* as); void del_user(int id); void del_task(int id); void del_assignment(Assignment& as); }; } // util #endif // ENVIRONMENT_H