Example #1
0
        public Sungero.Core.StateView GetStateView()
        {
            var stateView = StateView.Create();

            // Блок "От кого".
            var taskBeginText = _obj.Texts.OrderByDescending(t => t.Created).FirstOrDefault();
            var comment       = taskBeginText != null ? taskBeginText.Body : string.Empty;

            comment = comment != AcquaintanceTasks.Resources.TaskAutoText ? comment : string.Empty;
            if (_obj.Started.HasValue)
            {
                Docflow.PublicFunctions.OfficialDocument
                .AddUserActionBlock(stateView, _obj.Author, AcquaintanceTasks.Resources.StateViewDocumentSendFromAcquaintance, _obj.Started.Value, _obj, comment, _obj.StartedBy);
            }
            else
            {
                Docflow.PublicFunctions.OfficialDocument
                .AddUserActionBlock(stateView, _obj.Author, Docflow.ApprovalTasks.Resources.StateViewTaskDrawCreated, _obj.Created.Value, _obj, comment, _obj.Author);
            }

            // Блок "Задача".
            var taskBlock = this.AddTaskBlock(stateView);

            // "Ознакомление в электронном виде".
            var assignments = AcquaintanceAssignments.GetAll()
                              .Where(a => Equals(a.Task, _obj))
                              .Where(a => a.Created >= _obj.Started)
                              .ToList();
            var acquaintantedAssignments = assignments
                                           .Where(a => a.Status == Workflow.AssignmentBase.Status.Completed)
                                           .Where(a => Equals(a.CompletedBy, a.Performer))
                                           .ToList();
            var attentionAssignments = assignments
                                       .Where(a => a.Status == Workflow.AssignmentBase.Status.Completed)
                                       .Where(a => !Equals(a.CompletedBy, a.Performer))
                                       .ToList();

            // "Ознакомление под собственноручную подпись".
            var isElectronicAcquaintance = _obj.IsElectronicAcquaintance == true;

            if (!isElectronicAcquaintance)
            {
                // Задания выполненные не лично считаются также ознакомленными.
                acquaintantedAssignments = assignments
                                           .Where(a => a.Status == Workflow.AssignmentBase.Status.Completed)
                                           .ToList();

                // Заданий требующих внимания нет.
                attentionAssignments = new List <IAcquaintanceAssignment>();
            }

            // Блок "Ознакомленные".
            if (acquaintantedAssignments.Count > 1)
            {
                this.AddSelfCompletedAssignmentsBlocks(taskBlock, acquaintantedAssignments, isElectronicAcquaintance);
            }
            else
            {
                this.AddAssignmentBlock(taskBlock,
                                        acquaintantedAssignments.FirstOrDefault(),
                                        isElectronicAcquaintance,
                                        StateBlockIconSize.Large,
                                        AcquaintanceTasks.Resources.StateViewAsquaintance);
            }

            // Блок "Задания требующие внимания".
            foreach (var assignment in attentionAssignments)
            {
                this.AddAssignmentBlock(taskBlock,
                                        assignment,
                                        isElectronicAcquaintance,
                                        StateBlockIconSize.Large,
                                        AcquaintanceTasks.Resources.StateViewAsquaintance);
            }

            // Блок "Задания в работе".
            var inProcessAssignments = assignments
                                       .Where(a => a.Status != Workflow.AssignmentBase.Status.Completed)
                                       .ToList();

            this.AddInProcessAssignmentsBlock(taskBlock, inProcessAssignments);

            // Блок "Задание-контроль".
            var finishAssignments = AcquaintanceFinishAssignments.GetAll()
                                    .Where(a => Equals(a.Task, _obj))
                                    .Where(a => a.Created >= _obj.Started)
                                    .ToList();

            foreach (var assignment in finishAssignments)
            {
                this.AddAssignmentBlock(taskBlock,
                                        assignment,
                                        isElectronicAcquaintance,
                                        StateBlockIconSize.Large,
                                        AcquaintanceTasks.Resources.StateViewFinishAssignment);
            }

            return(stateView);
        }
Example #2
0
        /// <summary>
        /// Добавить блок задачи на ознакомление.
        /// </summary>
        /// <param name="stateView">Схема представления.</param>
        /// <returns>Новый блок.</returns>
        public Sungero.Core.StateBlock AddTaskBlock(Sungero.Core.StateView stateView)
        {
            // Стили.
            var isDraft     = _obj.Status == Workflow.Task.Status.Draft;
            var headerStyle = Docflow.PublicFunctions.Module.CreateHeaderStyle(isDraft);
            var labelStyle  = Docflow.PublicFunctions.Module.CreateStyle(false, isDraft, false);
            var noteStyle   = Docflow.PublicFunctions.Module.CreateNoteStyle(isDraft);

            // Блок задачи.
            var taskBlock = stateView.AddBlock();

            taskBlock.Entity     = _obj;
            taskBlock.IsExpanded = _obj.Status == Workflow.Task.Status.InProcess;

            // Иконка.
            taskBlock.AssignIcon(AcquaintanceTasks.Resources.AcquaintanceTaskIco, StateBlockIconSize.Large);

            // Заголовок.
            var header = AcquaintanceTasks.Resources.StateViewDocumentSelfSignAcquaintance;

            if (_obj.IsElectronicAcquaintance == true)
            {
                header = AcquaintanceTasks.Resources.StateViewDocumentElectonicAcquaintance;
            }
            taskBlock.AddLabel(header, headerStyle);
            taskBlock.AddLineBreak();

            // Срок.
            var deadline = _obj.Deadline.HasValue ?
                           Docflow.PublicFunctions.Module.ToShortDateShortTime(_obj.Deadline.Value.ToUserTime()) :
                           Docflow.OfficialDocuments.Resources.StateViewWithoutTerm;

            taskBlock.AddLabel(string.Format("{0}: {1}", Docflow.OfficialDocuments.Resources.StateViewDeadline, deadline), noteStyle);

            // Статус.
            var status = string.Empty;

            if (_obj.Status == Workflow.Task.Status.InProcess)
            {
                status = Docflow.ApprovalTasks.Resources.StateViewInProcess;
                var onReview = AcquaintanceFinishAssignments.GetAll()
                               .Where(a => Equals(a.Task, _obj))
                               .Where(a => a.Created >= _obj.Started)
                               .Any();
                if (onReview)
                {
                    status = AcquaintanceTasks.Resources.StateViewFinish;
                }
            }
            else if (_obj.Status == Workflow.Task.Status.Completed)
            {
                status = Docflow.ApprovalTasks.Resources.StateViewCompleted;
            }
            else if (_obj.Status == Workflow.Task.Status.Aborted)
            {
                status = Docflow.ApprovalTasks.Resources.StateViewAborted;
            }
            else if (_obj.Status == Workflow.Task.Status.Suspended)
            {
                status = Docflow.ApprovalTasks.Resources.StateViewSuspended;
            }
            else if (_obj.Status == Workflow.Task.Status.Draft)
            {
                status = Docflow.ApprovalTasks.Resources.StateViewDraft;
            }

            Docflow.PublicFunctions.Module.AddInfoToRightContent(taskBlock, status, labelStyle);

            return(taskBlock);
        }