public static IStatusReportRequestTask CreateStatusReportRequest(IActionItemExecutionTask task) { var performers = Functions.ActionItemExecutionTask.GetActionItemsPerformers(task).ToList(); if (!performers.Any()) { return(null); } var statusReportRequest = StatusReportRequestTasks.CreateAsSubtask(task); statusReportRequest.ActionItem = task.ActionItem; var document = task.DocumentsGroup.OfficialDocuments.FirstOrDefault(); if (document != null) { statusReportRequest.DocumentsGroup.OfficialDocuments.Add(document); } statusReportRequest.Subject = Functions.StatusReportRequestTask.GetStatusReportRequestSubject(statusReportRequest, StatusReportRequestTasks.Resources.ReportRequestTaskSubject); statusReportRequest.ActiveText = StatusReportRequestTasks.Resources.ReportFromJob; if (task.IsCompoundActionItem ?? false) { if (performers.Count == 1) { statusReportRequest.Assignee = Company.Employees.As(performers.First()); } } else { statusReportRequest.Assignee = task.Assignee; } return(statusReportRequest); }
/// <summary> /// Получить тему поручения. /// </summary> /// <param name="task">Поручение.</param> /// <param name="beginningSubject">Изначальная тема.</param> /// <returns>Сформированная тема поручения.</returns> public static string GetActionItemExecutionSubject(IActionItemExecutionTask task, CommonLibrary.LocalizedString beginningSubject) { var autoSubject = Docflow.Resources.AutoformatTaskSubject.ToString(); using (TenantInfo.Culture.SwitchTo()) { var subject = beginningSubject.ToString(); var actionItem = task.ActionItem; // Добавить резолюцию в тему. if (!string.IsNullOrWhiteSpace(actionItem)) { var hasDocument = task.DocumentsGroup.OfficialDocuments.Any(); var formattedResolution = Functions.ActionItemExecutionTask.FormatActionItemForSubject(actionItem, hasDocument); // Конкретно у уведомления о старте составного поручения - всегда рисуем с кавычками. if (!hasDocument && subject == ActionItemExecutionTasks.Resources.WorkFromActionItemIsCreatedCompound.ToString()) { formattedResolution = string.Format("\"{0}\"", formattedResolution); } subject += string.Format(" {0}", formattedResolution); } // Добавить ">> " для тем подзадач. var isNotMainTask = task.ActionItemType != Sungero.RecordManagement.ActionItemExecutionTask.ActionItemType.Main; if (isNotMainTask) { subject = string.Format(">> {0}", subject); } // Добавить имя документа, если поручение с документом. var document = task.DocumentsGroup.OfficialDocuments.FirstOrDefault(); if (document != null) { subject += ActionItemExecutionTasks.Resources.SubjectWithDocumentFormat(document.Name); } subject = Docflow.PublicFunctions.Module.TrimSpecialSymbols(subject); if (subject != beginningSubject) { return(subject); } } return(autoSubject); }
public virtual void StartBlock4(Sungero.RecordManagement.Server.ActionItemExecutionAssignmentArguments e) { // Задать тему, исполнителей и срок. if (_obj.ExecutionState == ExecutionState.OnControl) { e.Block.Subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(_obj, ActionItemExecutionTasks.Resources.ActionItemReworkSubject); } else { e.Block.Subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(_obj, ActionItemExecutionTasks.Resources.ActionItemExecutionSubject); } e.Block.Performers.Add(_obj.Assignee); if (_obj.Deadline.HasValue) { e.Block.AbsoluteDeadline = _obj.Deadline.Value; e.Block.ScheduledDate = _obj.Deadline.Value; } // Выдать права на документ. var document = _obj.DocumentsGroup.OfficialDocuments.FirstOrDefault(); if (document != null) { Docflow.PublicFunctions.OfficialDocument.GrantAccessRightsToActionItemAttachment(document, _obj.Assignee); } // Для подзадач соисполнителям заполнять "Выдал" из основной задачи. IActionItemExecutionTask actionItemTask = null; if (_obj.ActionItemType != ActionItemType.Main) { var mainActionItemExecution = ActionItemExecutionTasks.As(_obj.MainTask); if (mainActionItemExecution != null && !(mainActionItemExecution.IsCompoundActionItem ?? false)) { actionItemTask = mainActionItemExecution; } } if (actionItemTask == null) { actionItemTask = _obj; } e.Block.AssignedBy = actionItemTask.AssignedBy; Docflow.PublicFunctions.Module.SynchronizeAddendaAndAttachmentsGroup(_obj.AddendaGroup, document); }
public virtual void AssigneeChanged(Sungero.RecordManagement.Shared.StatusReportRequestTaskAssigneeChangedEventArgs e) { var parentTask = ActionItemExecutionTasks.As(_obj.ParentTask); var parentAssignment = ActionItemExecutionAssignments.As(_obj.ParentAssignment); IActionItemExecutionTask newParentTask = null; IActionItemExecutionAssignment newParentAssignment = null; if (e.NewValue != null) { // Определить исполняемое выбранным сотрудником поручение, если отправляем запрос из задачи. if (parentTask != null) { if (parentTask.IsCompoundActionItem.Value) { var assignment = Functions.ActionItemExecutionTask.Remote.GetActionItems(parentTask) .Where(j => Equals(j.Performer, e.NewValue)) .Where(a => ActionItemExecutionTasks.Is(a.Task)) .First(); newParentTask = ActionItemExecutionTasks.As(assignment.Task); } else { newParentTask = parentTask; } } // Определить исполняемое выбранным сотрудником поручение, если отправляем запрос из задания. if (parentAssignment != null) { newParentAssignment = Functions.ActionItemExecutionAssignment.Remote.GetActionItems(parentAssignment) .First(j => Equals(j.Performer, e.NewValue)); } // Обновить тему. _obj.Subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(newParentTask ?? ActionItemExecutionTasks.As(newParentAssignment.Task), StatusReportRequestTasks.Resources.ReportRequestTaskSubject); } else { _obj.Subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(parentTask ?? ActionItemExecutionTasks.As(parentAssignment.Task), StatusReportRequestTasks.Resources.ReportRequestTaskSubject); } }