public virtual void StartBlock5(Sungero.RecordManagement.Server.DeadlineExtensionNotificationArguments e) { var desiredDeadline = _obj.NewDeadline.Value; var desiredDeadlineLabel = Functions.DeadlineExtensionTask.GetDesiredDeadlineLabel(desiredDeadline); var subjectFormat = DeadlineExtensionTasks.Resources.ExtensionDeadlineFormat(desiredDeadlineLabel); var subject = Functions.DeadlineExtensionTask.GetDeadlineExtensionSubject(_obj, subjectFormat); e.Block.Subject = Docflow.PublicFunctions.Module.TrimSpecialSymbols(subject); e.Block.Performers.Add(_obj.Author); e.Block.PreviousDeadline = _obj.CurrentDeadline; e.Block.NewDeadline = desiredDeadline; // Отправить уведомления соисполнителям. var actionItemAssignment = ActionItemExecutionAssignments.Get(_obj.ParentAssignment.Id); var actionItemExecution = ActionItemExecutionTasks.Get(actionItemAssignment.Task.Id); if (actionItemExecution.CoAssignees.Count > 0) { foreach (var performer in actionItemExecution.CoAssignees) { e.Block.Performers.Add(performer.Assignee); } } Docflow.PublicFunctions.Module.SynchronizeAddendaAndAttachmentsGroup(_obj.AddendaGroup, _obj.DocumentsGroup.OfficialDocuments.FirstOrDefault()); }
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; } } } }