Пример #1
0
 public virtual void StartNotice2(Sungero.RecordManagement.IActionItemSupervisorNotification notice, Sungero.RecordManagement.Server.ActionItemSupervisorNotificationArguments e)
 {
     notice.Importance = _obj.Importance;
 }
Пример #2
0
        public virtual void StartBlock2(Sungero.RecordManagement.Server.ActionItemSupervisorNotificationArguments e)
        {
            // Задать тему.
            e.Block.Subject = Functions.ActionItemExecutionTask.GetActionItemExecutionSubject(_obj, ActionItemExecutionTasks.Resources.ControlNoticeSubject);

            // Задать исполнителя.
            if (_obj.Supervisor != null && _obj.Author != _obj.Supervisor && _obj.StartedBy != _obj.Supervisor && (_obj.ActionItemType == ActionItemType.Main))
            {
                e.Block.Performers.Add(_obj.Supervisor);
            }

            Functions.ActionItemExecutionTask.GrantRightsToAttachments(_obj, _obj.DocumentsGroup.All.ToList(), true);
            Functions.ActionItemExecutionTask.GrantRightsToAttachments(_obj, _obj.AddendaGroup.All.ToList(), true);

            var document = _obj.DocumentsGroup.OfficialDocuments.FirstOrDefault();

            if (document != null)
            {
                var documentsGroupGuid    = Docflow.PublicConstants.Module.TaskMainGroup.ActionItemExecutionTask;
                var nonStartedActiveTasks = ActionItemExecutionTasks
                                            .GetAll(t => t.AttachmentDetails.Any(a => a.GroupId == documentsGroupGuid && a.AttachmentId == document.Id) && t.Status == Workflow.Task.Status.InProcess && t.Id != _obj.Id)
                                            .ToList();

                foreach (var task in nonStartedActiveTasks)
                {
                    var hasAssignments = Workflow.Assignments.GetAll(s => Equals(task, s.Task)).Any();
                    var hasSubTasks    = Workflow.Tasks.GetAll(s => Equals(task, s.ParentTask)).Any();
                    if (!hasAssignments && !hasSubTasks)
                    {
                        Logger.DebugFormat("Granting rights for task {0}. Current Task: {1}", task.Id, _obj.Id);
                        Functions.ActionItemExecutionTask.GrantRightsToAttachments(task, task.DocumentsGroup.All.ToList(), true);
                        Functions.ActionItemExecutionTask.GrantRightsToAttachments(task, task.AddendaGroup.All.ToList(), true);
                    }
                }
            }

            Docflow.PublicFunctions.Module.SynchronizeAddendaAndAttachmentsGroup(_obj.AddendaGroup, _obj.DocumentsGroup.OfficialDocuments.FirstOrDefault());

            // Выдача прав соисполнителям и составным, чтобы Script10Execute в цикле не зависал при блокировках документа
            if (document != null)
            {
                var assignees     = _obj.CoAssignees.Select(a => a.Assignee);
                var partAssignees = _obj.ActionItemParts.Select(p => p.Assignee);
                foreach (var assignee in assignees.Concat(partAssignees))
                {
                    if (!document.AccessRights.IsGrantedDirectly(DefaultAccessRightsTypes.Read, assignee))
                    {
                        document.AccessRights.Grant(assignee, DefaultAccessRightsTypes.Read);
                    }
                }
            }

            // Задать состояние поручения.
            if (_obj.ExecutionState != ExecutionState.OnRework && _obj.Assignee != null)
            {
                _obj.ExecutionState = ExecutionState.OnExecution;
            }

            // Заполнить исполнителя, если это первое поручение по документу.
            if (document != null && document.Assignee == null && document.State.Properties.Assignee.IsVisible)
            {
                document.Assignee = _obj.Assignee;
            }

            // Обновить статус исполнения документа
            Functions.ActionItemExecutionTask.SetDocumentStates(_obj);
        }