Beispiel #1
0
        public static IStatusReportRequestTask CreateStatusReportRequest(IActionItemExecutionAssignment job)
        {
            var performers = Functions.ActionItemExecutionAssignment.GetActionItemsAssignees(job).ToList();

            if (!performers.Any())
            {
                return(null);
            }

            var statusReportRequest = StatusReportRequestTasks.CreateAsSubtask(job);

            statusReportRequest.ActionItem = job.ActionItem;
            var document = job.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 (performers.Count == 1)
            {
                statusReportRequest.Assignee = Company.Employees.As(performers.First());
            }

            statusReportRequest.Author = job.Performer;
            return(statusReportRequest);
        }
Beispiel #2
0
 public static List <IActionItemExecutionTask> GetSubActionItemExecution(IActionItemExecutionAssignment entity)
 {
     return(ActionItemExecutionTasks
            .GetAll()
            .Where(j => j.Status.Value == Workflow.Task.Status.InProcess)
            .Where(j => j.ActionItemType == ActionItemType.Additional)
            .Where(j => j.ParentAssignment == entity)
            .ToList());
 }
Beispiel #3
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);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Получить пояснение к заданию.
        /// </summary>
        /// <param name="assignment">Задание.</param>
        /// <returns>Пояснение.</returns>
        private static string GetDescription(IActionItemExecutionAssignment assignment)
        {
            var description = string.Empty;

            var mainTask = ActionItemExecutionTasks.As(assignment.Task);

            if (mainTask == null)
            {
                return(description);
            }

            var supervisor = mainTask.Supervisor;

            if (supervisor != null)
            {
                description += (mainTask.ActionItemType == ActionItemType.Additional)
          ? RecordManagement.ActionItemExecutionTasks.Resources.OnControlWithResponsibleFormat(Sungero.Company.PublicFunctions.Employee.GetShortName(supervisor, false).TrimEnd('.'))
          : RecordManagement.ActionItemExecutionTasks.Resources.OnControlFormat(Sungero.Company.PublicFunctions.Employee.GetShortName(supervisor, false).TrimEnd('.'));
            }

            if (mainTask.ActionItemType == ActionItemType.Additional)
            {
                description += RecordManagement.ActionItemExecutionTasks.Resources.YouAreAdditionalAssignee;
            }
            else
            {
                if (mainTask.ActionItemType == ActionItemType.Main && mainTask.CoAssignees.Any() && !mainTask.CoAssignees.Any(ca => Equals(ca.Assignee, assignment.Performer)))
                {
                    description += RecordManagement.ActionItemExecutionTasks.Resources.YouAreResponsibleAssignee;
                }
                else
                {
                    description += RecordManagement.ActionItemExecutionTasks.Resources.YouAreAssignee;
                }
            }

            return(description);
        }
Beispiel #5
0
        public static Sungero.Core.StateView GetActionItemExecutionAssignmentStateView(IActionItemExecutionAssignment assignment)
        {
            var stateView = Sungero.Core.StateView.Create();
            var block     = stateView.AddBlock();
            var content   = block.AddContent();

            content.AddLabel(GetDescription(assignment));

            block.ShowBorder = false;

            return(stateView);
        }
Beispiel #6
0
 public static IQueryable <IUser> GetActionItemsAssignees(IActionItemExecutionAssignment entity)
 {
     return(GetActionItems(entity).Select(p => p.Performer));
 }
Beispiel #7
0
 public static IQueryable <IActionItemExecutionAssignment> GetActionItems(IActionItemExecutionAssignment entity)
 {
     return(ActionItemExecutionAssignments.GetAll(j => entity.Equals(j.Task.ParentAssignment) && j.Status == Workflow.AssignmentBase.Status.InProcess));
 }