Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TeamTasks {
- public:
- const TasksInfo& GetPersonTasksInfo(const string& person) const {
- return tasks.at(person);
- }
- void AddNewTask(const string& person) {
- ++tasks[person][TaskStatus::NEW];
- }
- tuple<TasksInfo, TasksInfo> PerformPersonTasks(
- const string& person, int task_count) {
- TasksInfo updated_tasks, untouched_tasks;
- for (int i = 0; i < tasks[person][TaskStatus::NEW]; ++i) {
- ++updated_tasks[TaskStatus::IN_PROGRESS];
- --task_count;
- if (task_count <= 0) {
- break;
- }
- }
- if (task_count > 0) {
- for (int i = 0; i < tasks[person][TaskStatus::IN_PROGRESS]; ++i) {
- ++updated_tasks[TaskStatus::TESTING];
- --task_count;
- if (task_count <= 0) {
- break;
- }
- }
- }
- if (task_count > 0) {
- for (int i = 0; i < tasks[person][TaskStatus::TESTING]; ++i) {
- ++updated_tasks[TaskStatus::DONE];
- --task_count;
- if (task_count <= 0) {
- break;
- }
- }
- }
- untouched_tasks[TaskStatus::NEW] = tasks[person][TaskStatus::NEW] - updated_tasks[TaskStatus::IN_PROGRESS];
- untouched_tasks[TaskStatus::IN_PROGRESS] = tasks[person][TaskStatus::IN_PROGRESS] - updated_tasks[TaskStatus::TESTING];
- untouched_tasks[TaskStatus::TESTING] = tasks[person][TaskStatus::TESTING] - updated_tasks[TaskStatus::DONE];
- tasks[person][TaskStatus::NEW]-= updated_tasks[TaskStatus::IN_PROGRESS];
- tasks[person][TaskStatus::IN_PROGRESS] = tasks[person][TaskStatus::IN_PROGRESS] + updated_tasks[TaskStatus::IN_PROGRESS] - updated_tasks[TaskStatus::TESTING];
- tasks[person][TaskStatus::TESTING] = tasks[person][TaskStatus::TESTING] + updated_tasks[TaskStatus::TESTING] - updated_tasks[TaskStatus::DONE];
- tasks[person][TaskStatus::DONE] += updated_tasks[TaskStatus::DONE];
- for (auto& t : updated_tasks) {
- if (t.second == 0) {
- updated_tasks.erase(t.first);
- }
- }
- for (auto& t : untouched_tasks) {
- if (t.second == 0) {
- untouched_tasks.erase(t.first);
- }
- }
- return tie(updated_tasks, untouched_tasks);
- }
- private:
- map<string, TasksInfo> tasks;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement