Exemple #1
0
        public override void Showing(Sungero.Presentation.FormShowingEventArgs e)
        {
            var approvalManagerAssignment = ApprovalManagerAssignments.As(_obj.ParentAssignment);

            if (approvalManagerAssignment != null)
            {
                e.Params.AddOrUpdate(Constants.DeadlineExtensionTask.CanSelectAssignee, false);
            }

            var actionItemExecutionAssignment = RecordManagement.ActionItemExecutionAssignments.As(_obj.ParentAssignment);

            if (actionItemExecutionAssignment != null)
            {
                var assignee = Functions.DeadlineExtensionTask.Remote.GetAssigneesForActionItemExecutionTask(actionItemExecutionAssignment);
                e.Params.AddOrUpdate(Constants.DeadlineExtensionTask.CanSelectAssignee, assignee.CanSelect);
            }
        }
Exemple #2
0
        public override void BeforeAbort(Sungero.Workflow.Server.BeforeAbortEventArgs e)
        {
            // Если прекращён черновик, прикладную логику по прекращению выполнять не надо.
            if (_obj.State.Properties.Status.OriginalValue == Workflow.Task.Status.Draft)
            {
                return;
            }

            var document = _obj.DocumentGroup.OfficialDocuments.First();

            var subject       = string.Empty;
            var threadSubject = string.Empty;

            // Отправить уведомления о прекращении.
            using (TenantInfo.Culture.SwitchTo())
            {
                threadSubject = ApprovalTasks.Resources.AbortNoticeSubject;
                subject       = string.Format(Sungero.Exchange.Resources.TaskSubjectTemplate, threadSubject, Docflow.PublicFunctions.Module.TrimSpecialSymbols(document.Name));
            }

            var allApprovers = ApprovalAssignments.GetAll(asg => asg.Task == _obj && asg.IsRead.Value).Select(app => app.Performer).ToList();

            allApprovers.AddRange(ApprovalManagerAssignments.GetAll(asg => asg.Task == _obj && asg.IsRead.Value).Select(app => app.Performer).ToList());
            allApprovers.AddRange(ApprovalSigningAssignments.GetAll(asg => asg.Task == _obj && asg.IsRead.Value).Select(app => app.Performer).ToList());
            var author           = _obj.Author;
            var reworkAssignment = Functions.ApprovalTask.GetLastReworkAssignment(_obj);

            if (reworkAssignment != null)
            {
                allApprovers.Add(reworkAssignment.Performer);
                if (!Equals(_obj.Author, reworkAssignment.Performer))
                {
                    allApprovers.Add(_obj.Author);
                    author = reworkAssignment.Performer;
                }
            }
            allApprovers.Remove(Users.Current);
            if (allApprovers.Any())
            {
                Functions.Module.SendNoticesAsSubtask(subject, allApprovers, _obj, _obj.AbortingReason, author, threadSubject);
            }

            // Обновить статус согласования - аннулирован.
            Functions.ApprovalTask.UpdateApprovalState(_obj, OfficialDocument.InternalApprovalState.Aborted);
        }
Exemple #3
0
        public virtual IQueryable <Sungero.Workflow.IAssignmentBase> OnApprovalDataQuery(IQueryable <Sungero.Workflow.IAssignmentBase> query)
        {
            // Фильтр по типу.
            var typeFilterEnabled     = _filter != null && (_filter.RuleBased || _filter.Free);
            var showRuleBasedApproval = !typeFilterEnabled || _filter.RuleBased;
            var showFreeApproval      = !typeFilterEnabled || _filter.Free;
            var result = query
                         .Where(a => showRuleBasedApproval && (ApprovalAssignments.Is(a) || ApprovalManagerAssignments.Is(a)) ||
                                showFreeApproval && FreeApprovalAssignments.Is(a));

            // Запрос непрочитанных без фильтра.
            if (_filter == null)
            {
                return(RecordManagement.PublicFunctions.Module.ApplyCommonSubfolderFilters(result));
            }

            // Фильтры по статусу, замещению и периоду.
            result = RecordManagement.PublicFunctions.Module.ApplyCommonSubfolderFilters(result, _filter.InProcess,
                                                                                         _filter.Last30Days, _filter.Last90Days, _filter.Last180Days, false);

            return(result);
        }