public virtual bool Monitoring9Result() { return((_obj.IsCompoundActionItem ?? false) || _obj.CoAssignees.Count == 0 || ActionItemExecutionAssignments.GetAll() .Where(j => j.Task == _obj) .Where(j => j.Status == Workflow.AssignmentBase.Status.InProcess) .Where(j => j.Performer == _obj.Assignee) .Where(j => j.TaskStartId == _obj.StartId) .Any()); }
public virtual void Script4Execute() { var desiredDeadline = _obj.NewDeadline; // Обновить срок у задания. var actionItemAssignment = ActionItemExecutionAssignments.Get(_obj.ParentAssignment.Id); actionItemAssignment.Deadline = desiredDeadline; actionItemAssignment.ScheduledDate = desiredDeadline; actionItemAssignment.Save(); // Обновить срок у задачи. var actionItemExecution = ActionItemExecutionTasks.Get(actionItemAssignment.Task.Id); actionItemExecution.Deadline = desiredDeadline; actionItemExecution.MaxDeadline = desiredDeadline; // Обновить срок у составной задачи. if (actionItemExecution.ActionItemType == ActionItemType.Component) { var component = ActionItemExecutionTasks.Get(actionItemExecution.ParentTask.Id); var actionItem = component.ActionItemParts.FirstOrDefault(j => Equals(j.Assignee, actionItemExecution.Assignee) && Equals(j.ActionItemPart, actionItemExecution.ActionItem) && j.Deadline == _obj.CurrentDeadline); if (actionItem != null) { actionItem.Deadline = desiredDeadline; } } // Продлить сроки соисполнителей. foreach (var performer in actionItemExecution.CoAssignees) { var subTasks = ActionItemExecutionTasks.GetAll(t => Equals(t.MainTask, actionItemExecution) && t.Status == Sungero.Workflow.Task.Status.InProcess && Equals(t.Assignee, performer.Assignee)); foreach (var subTask in subTasks) { subTask.Deadline = desiredDeadline; subTask.MaxDeadline = desiredDeadline; // Продлить срок у активного задания соисполнителя. var assignment = ActionItemExecutionAssignments.GetAll() .FirstOrDefault(a => Equals(a.Task, subTask) && a.Status == Sungero.Workflow.AssignmentBase.Status.InProcess); if (assignment != null) { assignment.Deadline = desiredDeadline; assignment.ScheduledDate = desiredDeadline; } } } }
public bool IsCoAssigneeAssignamentCreated() { var task = ActionItemExecutionTasks.As(_obj.Task); var taskAssignees = task.CoAssignees.Select(c => c.Assignee).Distinct().ToList(); var asgAssignees = ActionItemExecutionAssignments .GetAll(j => j.Task.ParentAssignment != null && Equals(task, j.Task.ParentAssignment.Task) && Equals(task.StartId, j.Task.ParentAssignment.TaskStartId) && Equals(ActionItemExecutionTasks.As(j.Task).ActionItemType, ActionItemType.Additional)) .Select(c => c.Performer).Distinct().ToList(); return(taskAssignees.Count == asgAssignees.Count); }
public virtual void Script10Execute() { var subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(_obj, ActionItemExecutionTasks.Resources.TaskSubject); var document = _obj.DocumentsGroup.OfficialDocuments.FirstOrDefault(); Docflow.PublicFunctions.Module.SynchronizeAddendaAndAttachmentsGroup(_obj.AddendaGroup, document); // Задания соисполнителям. if (_obj.CoAssignees != null && _obj.CoAssignees.Count > 0) { var performer = _obj.CoAssignees.FirstOrDefault(ca => ca.AssignmentCreated != true); var parentAssignment = ActionItemExecutionAssignments.GetAll() .Where(j => Equals(j.Task, _obj)) .Where(j => j.Status == Workflow.AssignmentBase.Status.InProcess) .Where(j => Equals(j.Performer, _obj.Assignee)) .Where(j => Equals(_obj.StartId, j.TaskStartId)) .FirstOrDefault(); var actionItemExecution = ActionItemExecutionTasks.CreateAsSubtask(parentAssignment); actionItemExecution.Importance = _obj.Importance; actionItemExecution.ActionItemType = ActionItemType.Additional; // Синхронизировать вложения и выдать права. if (document != null) { actionItemExecution.DocumentsGroup.OfficialDocuments.Add(document); } foreach (var addInformation in _obj.OtherGroup.All) { actionItemExecution.OtherGroup.All.Add(addInformation); } // Задать текст. actionItemExecution.Texts.Last().IsAutoGenerated = true; // Задать поручение. actionItemExecution.ActionItem = _obj.ActionItem; // Задать тему. actionItemExecution.Subject = subject; // Задать исполнителя, ответственного, контролера и инициатора. actionItemExecution.Assignee = performer.Assignee; actionItemExecution.IsUnderControl = true; actionItemExecution.Supervisor = _obj.Assignee; actionItemExecution.AssignedBy = _obj.Assignee; // Задать срок. actionItemExecution.Deadline = _obj.Deadline; actionItemExecution.MaxDeadline = _obj.Deadline; actionItemExecution.Start(); performer.AssignmentCreated = true; } // Составное поручение. if (_obj.ActionItemParts != null && _obj.ActionItemParts.Count > 0) { var job = _obj.ActionItemParts.FirstOrDefault(aip => aip.AssignmentCreated != true); var actionItemExecution = ActionItemExecutionTasks.CreateAsSubtask(_obj); actionItemExecution.Importance = _obj.Importance; actionItemExecution.ActionItemType = ActionItemType.Component; // Синхронизировать вложения и выдать права. if (document != null) { actionItemExecution.DocumentsGroup.OfficialDocuments.Add(document); } foreach (var addInformation in _obj.OtherGroup.All) { actionItemExecution.OtherGroup.All.Add(addInformation); } // Задать поручение и текст. actionItemExecution.ActionItem = string.IsNullOrWhiteSpace(job.ActionItemPart) ? _obj.ActionItem : job.ActionItemPart; // Задать тему. actionItemExecution.Subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(actionItemExecution, ActionItemExecutionTasks.Resources.TaskSubject); actionItemExecution.ThreadSubject = Sungero.RecordManagement.ActionItemExecutionTasks.Resources.ActionItemWithNumberThreadSubject; // Задать исполнителя, ответственного, контролера и инициатора. actionItemExecution.Assignee = job.Assignee; actionItemExecution.IsUnderControl = _obj.IsUnderControl; actionItemExecution.Supervisor = _obj.Supervisor; actionItemExecution.Author = _obj.Author; actionItemExecution.AssignedBy = _obj.AssignedBy; // Задать срок. var actionItemDeadline = job.Deadline.HasValue ? job.Deadline : _obj.FinalDeadline; actionItemExecution.Deadline = actionItemDeadline; actionItemExecution.MaxDeadline = actionItemDeadline; actionItemExecution.Start(); // Добавить составные подзадачи в исходящее. if (actionItemExecution.Status == Sungero.Workflow.Task.Status.InProcess) { Sungero.Workflow.SpecialFolders.GetOutbox(_obj.StartedBy).Items.Add(actionItemExecution); } // Записать ссылку на поручение в составное поручение. job.ActionItemPartExecutionTask = actionItemExecution; job.AssignmentCreated = true; } }
public static IQueryable <IActionItemExecutionAssignment> GetActionItems(IActionItemExecutionAssignment entity) { return(ActionItemExecutionAssignments.GetAll(j => entity.Equals(j.Task.ParentAssignment) && j.Status == Workflow.AssignmentBase.Status.InProcess)); }