Seredenko-V

Untitled

May 1st, 2022
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. tuple<TasksInfo, TasksInfo> PerformPersonTasks(const string& person, int task_count) {
  2. if (InfoPerson_.count(person) == 0) { // если такого разработчика нет
  3. return {};
  4. }
  5. TasksInfo updated_tasks = InfoPerson_.at(person); // обновленные задачи
  6. TasksInfo untouched_tasks;
  7.  
  8. if (updated_tasks[TaskStatus::DONE] != 0) {
  9. untouched_tasks[TaskStatus::DONE] = updated_tasks[TaskStatus::DONE];
  10. }
  11.  
  12. for (size_t i = 0; i < 3; ++i) {
  13. if (task_count <= InfoPerson_[person][static_cast<TaskStatus>(i)]) {
  14. updated_tasks[static_cast<TaskStatus>(i + 1)] += task_count;
  15. updated_tasks[static_cast<TaskStatus>(i)] -= task_count;
  16. untouched_tasks[static_cast<TaskStatus>(i)] = InfoPerson_[person][static_cast<TaskStatus>(i)] - task_count;
  17. break;
  18. } else {
  19. updated_tasks[static_cast<TaskStatus>(i + 1)] += InfoPerson_[person][static_cast<TaskStatus>(i)];
  20. updated_tasks[static_cast<TaskStatus>(i)] -= InfoPerson_[person][static_cast<TaskStatus>(i)];
  21. task_count -= InfoPerson_[person][static_cast<TaskStatus>(i)];
  22. }
  23. }
  24.  
  25. InfoPerson_[person] = updated_tasks;;
  26. for (auto& [status, num_tasks] : updated_tasks) {
  27. num_tasks -= untouched_tasks[status];
  28. }
  29. untouched_tasks.erase(TaskStatus::DONE); // все невыполненные задачи
  30. return {updated_tasks, untouched_tasks};
  31. }
Advertisement
Add Comment
Please, Sign In to add comment