Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public virtual void FindSamePassports (Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
- {
- if (!context.PassportNumber.IsNullOrWhiteSpace() && !context.PassportSer.IsNullOrWhiteSpace())
- {
- string noSpaceSer = context.PassportSer.Replace(" ", "");
- string withSpaceSer = context.PassportSer;
- if (noSpaceSer.Length == 4)
- withSpaceSer = noSpaceSer.Insert(2, " ");
- Guid firstTaskUid = new Guid("c69614e0-f824-43e2-9365-ea786a5a365a");
- Guid secondTaskUid = new Guid("d394be4b-a8f2-4503-a2d6-db89c86123e4");
- 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);
- var StatusCompleted = PublicAPI.Enums.Workflow.WorkflowInstanceStatus.Completed;
- dynamic instanceContext;
- dynamic TaskNumber;
- string RequestCreationDate;
- dynamic RequestStatus;
- string RequestCreatorName;
- string Message;
- ICollection<WorkflowBookmark> WorkflowBookmarkList;
- List<TaskBase> TaskList = new List<TaskBase>();
- Guid? LastTaskUid = null;
- // Получаем список экземпляров, в которых номер и серия паспорта совпадают с указанными
- var instanceList = PublicAPI.Processes.WorkflowInstance.Filter().Query(QueryExpression).Find();
- if (instanceList.Any())
- {
- instanceList.ForEach(i =>
- {
- string query = String.Format("Instance = {0}", i.Id);
- // В каждом экземпляре находим список букмарков
- WorkflowBookmarkList = PublicAPI.Processes.Objects.WorkflowBookmark.Find(query);
- if (WorkflowBookmarkList.Any())
- {
- // Для каждого букмарка находим задачу, записываем в список
- WorkflowBookmarkList.ForEach(c => {
- TaskList.AddRange(PublicAPI.Processes.WorkflowTaskBase.Find(String.Format("WorkflowBookmark = {0}", c.Id.ToString())).ToList());
- });
- // Сортируем список задач, находим последнюю
- LastTaskUid = TaskList.OrderBy(t => t.StartDate).LastOrDefault().WorkflowBookmark.ElementUid;
- }
- // Если среди найденных задач, ElementUid последней совпадает с задачами, по которым предусмотрена отмена, при этом экземпляр завершён, то исключаем этот экземпляр из выборки
- if (!((LastTaskUid == firstTaskUid || LastTaskUid == secondTaskUid) && i.Status == StatusCompleted))
- {
- instanceContext = i.Context;
- // Номер заявки
- TaskNumber = instanceContext.ApplicationNumber;
- // Дата запуска процесса
- RequestCreationDate = i.StartDate.ToString();
- // Автор запуска процесса
- RequestCreatorName = i.Initiator.FullName;
- // Название статуса экземпляра процесса (зоны ответственности)
- RequestStatus = instanceContext.WorkflowInstanceStatus.Value.ToString();
- // Формируем сообщение для Warning-а
- Message = String.Format("На данного кандидата уже есть заявка. Номер: {0}; Дата создания: {1}; Автор заявки: {2}; Текущий статус: {3};", TaskNumber, RequestCreationDate, RequestCreatorName, RequestStatus);
- form.Notifier.Warning(Message);
- }
- });
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement