ExecuterFill.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. using esoft.Entities;
  2. using System;
  3. using System.CodeDom.Compiler;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. namespace esoft.Class
  10. {
  11. // Класс ExecuterFill наследуется от класса User и предоставляет методы для заполнения данных исполнителей и получения статистики по задачам.
  12. public class ExecuterFill : User
  13. {
  14. string grade; // Уровень Менеджера
  15. int managerID; // Менеджер, которому подчиняется Исполнитель
  16. string fioUser; // ФИО Исполнителя
  17. string fioManager; // ФИО Менеджера
  18. int numberTasks_Plan; // Количество задач, запланированных
  19. int numberTasks_Executed; // Количество задач, исполняемых
  20. int numberTasks_Done; // Количество выполненных задач
  21. int numberTasks_Сancelled; // Количество отмененных задач
  22. public string Grade
  23. {
  24. get { return grade; }
  25. set { grade = value; }
  26. }
  27. public int ManagerID
  28. {
  29. get { return managerID; }
  30. set { managerID = value; }
  31. }
  32. public string FioUser
  33. {
  34. get { return fioUser; }
  35. set { fioUser = value; }
  36. }
  37. public string FioManager
  38. {
  39. get { return fioManager; }
  40. set { fioManager = value; }
  41. }
  42. public int NumberTask_Plan
  43. {
  44. get { return numberTasks_Plan; }
  45. set { numberTasks_Plan = value; }
  46. }
  47. public int NumberTask_Executed
  48. {
  49. get { return numberTasks_Executed; }
  50. set { numberTasks_Executed = value; }
  51. }
  52. public int NumberTask_Done
  53. {
  54. get { return numberTasks_Done; }
  55. set { numberTasks_Done = value; }
  56. }
  57. public int NumberTask_Сancelled
  58. {
  59. get { return numberTasks_Сancelled; }
  60. set { numberTasks_Сancelled = value; }
  61. }
  62. // Метод Fill заполняет список ExecuterFill данными о пользователях и исполнителях.
  63. public static List<ExecuterFill> Fill()
  64. {
  65. List<ExecuterFill> executerFills = new List<ExecuterFill>();
  66. try
  67. {
  68. // Создание экземпляра ActualContext для получения актуальных данных
  69. ActualContext actualContext = new ActualContext();
  70. // Получение списка исполнителей и пользователей из контекста данных
  71. List<esoft.Entities.Executor> executors = esoftEntities.GetContext().Executor.ToList();
  72. List<User> users = esoftEntities.GetContext().User.ToList();
  73. // Проход по каждому пользователю и исполнителю
  74. foreach (var user in users)
  75. {
  76. foreach (var executer in executors)
  77. {
  78. // Проверка соответствия пользователя и исполнителя
  79. if (user.ID == executer.ID)
  80. {
  81. // Добавление нового экземпляра ExecuterFill в список, заполненного данными пользователя и исполнителя
  82. executerFills.Add(new ExecuterFill
  83. {
  84. ID = user.ID,
  85. Password = user.Password,
  86. FirstName = user.FirstName,
  87. MiddleName = user.MiddleName,
  88. LastName = user.LastName,
  89. Login = user.Login,
  90. IsDeleted = user.IsDeleted,
  91. FioUser = UserInFIO.SoloUser(user),
  92. Grade = executer.Grade,
  93. managerID = executer.ManagerID,
  94. FioManager = UserInFIO.SoloUser(
  95. actualContext.Users.FirstOrDefault(
  96. x => x.ID == actualContext.Executor.FirstOrDefault(
  97. z => z.ID == executer.ID).ManagerID)),
  98. NumberTask_Plan = GetPlanTaskCountForExecutor(executer.ID),
  99. NumberTask_Executed = GetExecutedTaskCountForExecutor(executer.ID),
  100. NumberTask_Done = GetDoneTaskCountForExecutor(executer.ID),
  101. NumberTask_Сancelled = GetCancelledTaskCountForExecutor(executer.ID),
  102. });
  103. }
  104. }
  105. }
  106. }
  107. catch
  108. {
  109. // В случае ошибки выводится сообщение об ошибке
  110. MessageBox.Show("Ошибка заполнения списка Исполнителей",
  111. "Ошибка",
  112. MessageBoxButton.OK,
  113. MessageBoxImage.Error);
  114. }
  115. // Возвращается список заполненных ExecuterFill или пустой список в случае ошибки
  116. return executerFills;
  117. }
  118. // Метод GetPlanTaskCountForExecutor возвращает количество запланированных задач для указанного исполнителя.
  119. private static int GetPlanTaskCountForExecutor(int executorID)
  120. {
  121. ActualContext actualContext = new ActualContext();
  122. {
  123. return actualContext.Tasks.Count(task => task.ExecutorID == executorID && task.Status == "запланирована");
  124. }
  125. }
  126. // Метод GetExecutedTaskCountForExecutor возвращает количество исполняемых задач для указанного исполнителя.
  127. private static int GetExecutedTaskCountForExecutor(int executorID)
  128. {
  129. ActualContext actualContext = new ActualContext();
  130. {
  131. return actualContext.Tasks.Count(task => task.ExecutorID == executorID && task.Status == "исполняется");
  132. }
  133. }
  134. // Метод GetDoneTaskCountForExecutor возвращает количество выполненных задач для указанного исполнителя.
  135. private static int GetDoneTaskCountForExecutor(int executorID)
  136. {
  137. ActualContext actualContext = new ActualContext();
  138. {
  139. return actualContext.Tasks.Count(task => task.ExecutorID == executorID && task.Status == "выполнена");
  140. }
  141. }
  142. // Метод GetCancelledTaskCountForExecutor возвращает количество отмененных задач для указанного исполнителя.
  143. private static int GetCancelledTaskCountForExecutor(int executorID)
  144. {
  145. ActualContext actualContext = new ActualContext();
  146. {
  147. return actualContext.Tasks.Count(task => task.ExecutorID == executorID && task.Status == "отменена");
  148. }
  149. }
  150. }
  151. }