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); } }
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); }
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); }