Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. public virtual void FindSamePassports (Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
  2. {
  3. if (!context.PassportNumber.IsNullOrWhiteSpace() && !context.PassportSer.IsNullOrWhiteSpace())
  4. {
  5. string noSpaceSer = context.PassportSer.Replace(" ", "");
  6. string withSpaceSer = context.PassportSer;
  7. if (noSpaceSer.Length == 4)
  8. withSpaceSer = noSpaceSer.Insert(2, " ");
  9.  
  10. Guid firstTaskUid = new Guid("c69614e0-f824-43e2-9365-ea786a5a365a");
  11. Guid secondTaskUid = new Guid("d394be4b-a8f2-4503-a2d6-db89c86123e4");
  12.  
  13. string QueryExpression = String.Format("Id in (FROM Recruiting SELECT WorkflowInstance WHERE ((PassportSer = '{0}' OR PassportSer = '{1}') AND PassportNumber = '{2}' AND NOT ROOT.Status in ('Terminated', 'Aborted')))", withSpaceSer, noSpaceSer, context.PassportNumber);
  14.  
  15. var StatusCompleted = PublicAPI.Enums.Workflow.WorkflowInstanceStatus.Completed;
  16. dynamic instanceContext;
  17. dynamic TaskNumber;
  18. string RequestCreationDate;
  19. dynamic RequestStatus;
  20. string RequestCreatorName;
  21. string Message;
  22. ICollection<WorkflowBookmark> WorkflowBookmarkList;
  23. List<TaskBase> TaskList = new List<TaskBase>();
  24. Guid? LastTaskUid = null;
  25.  
  26. // Получаем список экземпляров, в которых номер и серия паспорта совпадают с указанными
  27. var instanceList = PublicAPI.Processes.WorkflowInstance.Filter().Query(QueryExpression).Find();
  28.  
  29. if (instanceList.Any())
  30. {
  31. instanceList.ForEach(i =>
  32. {
  33. string query = String.Format("Instance = {0}", i.Id);
  34. // В каждом экземпляре находим список букмарков
  35. WorkflowBookmarkList = PublicAPI.Processes.Objects.WorkflowBookmark.Find(query);
  36.  
  37. if (WorkflowBookmarkList.Any())
  38. {
  39. // Для каждого букмарка находим задачу, записываем в список
  40. WorkflowBookmarkList.ForEach(c => {
  41. TaskList.AddRange(PublicAPI.Processes.WorkflowTaskBase.Find(String.Format("WorkflowBookmark = {0}", c.Id.ToString())).ToList());
  42. });
  43. // Сортируем список задач, находим последнюю
  44. LastTaskUid = TaskList.OrderBy(t => t.StartDate).LastOrDefault().WorkflowBookmark.ElementUid;
  45. }
  46.  
  47. // Если среди найденных задач, ElementUid последней совпадает с задачами, по которым предусмотрена отмена, при этом экземпляр завершён, то исключаем этот экземпляр из выборки
  48. if (!((LastTaskUid == firstTaskUid || LastTaskUid == secondTaskUid) && i.Status == StatusCompleted))
  49. {
  50. instanceContext = i.Context;
  51. // Номер заявки
  52. TaskNumber = instanceContext.ApplicationNumber;
  53. // Дата запуска процесса
  54. RequestCreationDate = i.StartDate.ToString();
  55. // Автор запуска процесса
  56. RequestCreatorName = i.Initiator.FullName;
  57. // Название статуса экземпляра процесса (зоны ответственности)
  58. RequestStatus = instanceContext.WorkflowInstanceStatus.Value.ToString();
  59. // Формируем сообщение для Warning-а
  60. Message = String.Format("На данного кандидата уже есть заявка. Номер: {0}; Дата создания: {1}; Автор заявки: {2}; Текущий статус: {3};", TaskNumber, RequestCreationDate, RequestCreatorName, RequestStatus);
  61. form.Notifier.Warning(Message);
  62. }
  63. });
  64. }
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement