Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }