Esempio n. 1
0
 public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
 {
     if (!Sungero.RecordManagement.Functions.AcquaintanceTask.ValidateAcquaintanceTaskStart(_obj, e))
     {
         return;
     }
 }
Esempio n. 2
0
        public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
        {
            Docflow.PublicFunctions.Module.ValidateTaskAuthor(_obj, e);

            var assignmentsDeadLine = 1;

            _obj.MaxDeadline = Calendar.Now.AddWorkingDays(assignmentsDeadLine);

            // Проверить заполненность причины продления срока.
            if (string.IsNullOrWhiteSpace(_obj.ActiveText))
            {
                e.AddError(DeadlineExtensionTasks.Resources.SpecifyReason);
            }

            // Проверить корректность срока.
            if (!Docflow.PublicFunctions.Module.CheckDeadline(_obj.NewDeadline, Calendar.Now))
            {
                e.AddError(_obj.Info.Properties.NewDeadline, RecordManagement.Resources.ImpossibleSpecifyDeadlineLessThanToday);
            }

            // Новый срок поручения должен быть больше старого.
            if (e.IsValid && !Docflow.PublicFunctions.Module.CheckDeadline(_obj.NewDeadline, _obj.CurrentDeadline))
            {
                e.AddError(_obj.Info.Properties.NewDeadline, DeadlineExtensionTasks.Resources.DesiredDeadlineIsNotCorrect);
            }

            // Заполнить первоначальную причину и причину.
            _obj.PrimaryReason = _obj.ActiveText;
            _obj.Reason        = _obj.ActiveText;

            // Выдать права на изменение для возможности прекращения задачи.
            Functions.ActionItemExecutionTask.GrantAccessRightToTask(_obj, _obj);
        }
        public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
        {
            Sungero.Docflow.Functions.DeadlineExtensionTask.ValidateDeadlineExtensionTaskStart(_obj, e);

            var assignmentsDeadLine = 1;

            _obj.MaxDeadline = Calendar.Now.AddWorkingDays(_obj.Assignee, assignmentsDeadLine);
        }
Esempio n. 4
0
        public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
        {
            if (!Sungero.Docflow.Functions.FreeApprovalTask.ValidateFreeApprovalTaskStart(_obj, e))
            {
                return;
            }

            Functions.Module.GrantReadRightsForAttachments(_obj.ForApprovalGroup.All.Concat(_obj.AddendaGroup.All).ToList(),
                                                           _obj.Observers.Select(o => o.Observer).ToList());
        }
Esempio n. 5
0
        public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
        {
            Docflow.PublicFunctions.Module.ValidateTaskAuthor(_obj, e);

            // Проверить корректность срока.
            if (!Docflow.PublicFunctions.Module.CheckDeadline(_obj.Assignee, _obj.MaxDeadline, Calendar.Now))
            {
                e.AddError(_obj.Info.Properties.MaxDeadline, RecordManagement.Resources.ImpossibleSpecifyDeadlineLessThanToday);
            }

            // Выдать права на изменение для возможности прекращения задачи.
            Functions.ActionItemExecutionTask.GrantAccessRightToTask(_obj, _obj);
        }
Esempio n. 6
0
        public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
        {
            if (!Sungero.RecordManagement.Functions.DocumentReviewTask.ValidateDocumentReviewTaskStart(_obj, e))
            {
                return;
            }

            // Выдать права группе регистрации документа.
            var document = _obj.DocumentForReviewGroup.OfficialDocuments.FirstOrDefault();

            if (document.DocumentRegister != null)
            {
                var registrationGroup = document.DocumentRegister.RegistrationGroup;
                if (registrationGroup != null)
                {
                    _obj.AccessRights.Grant(registrationGroup, DefaultAccessRightsTypes.Change);
                }
            }

            Docflow.PublicFunctions.Module.GrantReadRightsForAttachments(_obj.DocumentForReviewGroup.All
                                                                         .Concat(_obj.AddendaGroup.All).ToList(),
                                                                         _obj.ResolutionObservers.Select(o => o.Observer));
        }
Esempio n. 7
0
        public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
        {
            var document = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();

            if (document == null)
            {
                return;
            }

            if (!Sungero.Docflow.Functions.ApprovalTask.ValidateApprovalTaskStart(_obj, e))
            {
                return;
            }

            var refreshParameters = Functions.ApprovalTask.GetStagesInfoForRefresh(_obj);

            // Могли измениться условия, влияющие на обязательность полей.
            Functions.ApprovalTask.SetRequiredProperties(_obj, refreshParameters);

            // Сбросить номер текущего этапа при старте и рестарте.
            _obj.StageNumber = null;

            // Апнуть Iteration.
            _obj.Iteration++;

            // Выдать наблюдателям права на просмотр.
            Functions.Module.GrantReadRightsForAttachments(_obj.DocumentGroup.All.Concat(_obj.AddendaGroup.All).ToList(), _obj.Observers.Select(o => o.Observer).ToList());

            // Обновить обязательных согласующих.
            Functions.ApprovalTask.UpdateReglamentApprovers(_obj, _obj.ApprovalRule);

            // Развернуть дополнительных согласующих.
            var expandedAddApprovers = new List <IRecipient>();

            _obj.AddApproversExpanded.Clear();
            foreach (var addApprover in _obj.AddApprovers.Select(a => a.Approver).ToList())
            {
                if (!Groups.Is(addApprover))
                {
                    expandedAddApprovers.Add(addApprover);
                }
                else
                {
                    var employees = Groups.GetAllUsersInGroup(Groups.As(addApprover))
                                    .Where(r => r.Status == CoreEntities.DatabookEntry.Status.Active)
                                    .Select(r => Recipients.As(r));
                    expandedAddApprovers.AddRange(employees);
                }
            }
            foreach (var addApproverEx in expandedAddApprovers.Distinct().ToList())
            {
                _obj.AddApproversExpanded.AddNew().Approver = addApproverEx;
            }

            // Заполнить deliveryMethod документа значением из задачи.
            var outgoingDocument = OutgoingDocumentBases.As(document);

            if (_obj.State.Properties.DeliveryMethod.IsVisible == true && outgoingDocument != null && outgoingDocument.IsManyAddressees != true)
            {
                document.DeliveryMethod = _obj.DeliveryMethod;
            }
            // Заполнить статус согласования документа на момент старта задачи.
            _obj.DocumentExternalApprovalState = document.ExternalApprovalState ?? ApprovalTask.DocumentExternalApprovalState.Empty;

            // Сбросить значение свойства "Исполнитель этапа не определен".
            _obj.IsStageAssigneeNotFound = false;
        }
Esempio n. 8
0
        public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
        {
            // Если задача была стартована через UI, то проверяем корректность срока.
            bool startedFromUI;

            if (e.Params.TryGetValue(PublicConstants.ActionItemExecutionTask.CheckDeadline, out startedFromUI) && startedFromUI)
            {
                e.Params.Remove(PublicConstants.ActionItemExecutionTask.CheckDeadline);
            }

            if (!Functions.ActionItemExecutionTask.ValidateActionItemExecutionTaskStart(_obj, e, startedFromUI))
            {
                return;
            }

            // Задать текст в переписке.
            if (_obj.IsCompoundActionItem == true)
            {
                _obj.ActiveText    = string.IsNullOrEmpty(_obj.ActionItem) ? Sungero.RecordManagement.ActionItemExecutionTasks.Resources.DefaultActionItem : _obj.ActionItem;
                _obj.ThreadSubject = Sungero.RecordManagement.ActionItemExecutionTasks.Resources.CompoundActionItemThreadSubject;
            }
            else if (_obj.ActionItemType != ActionItemType.Component)
            {
                _obj.ThreadSubject = Sungero.RecordManagement.ActionItemExecutionTasks.Resources.ActionItemThreadSubject;
            }

            if (_obj.ActionItemType == ActionItemType.Component)
            {
                _obj.ActiveText = _obj.ActionItem;
                // При рестарте поручения обновляется текст, срок и исполнитель в табличной части составного поручения.
                var actionItem = ActionItemExecutionTasks.As(_obj.ParentTask).ActionItemParts.FirstOrDefault(s => Equals(s.ActionItemPartExecutionTask, _obj));
                // Обновить текст поручения, если изменен индивидуальный текст или указан общий текст вместо индивидуального.
                if (actionItem.ActionItemExecutionTask.ActionItem != _obj.ActionItem && actionItem.ActionItemPart != _obj.ActionItem ||
                    actionItem.ActionItemExecutionTask.ActionItem == _obj.ActionItem && !string.IsNullOrEmpty(actionItem.ActionItemPart))
                {
                    actionItem.ActionItemPart = _obj.ActionItem;
                }
                // Обновить срок поручения, если изменен индивидуальный срок или указан общий срок вместо индивидуального.
                if (actionItem.ActionItemExecutionTask.FinalDeadline != _obj.Deadline && actionItem.Deadline != _obj.Deadline ||
                    actionItem.ActionItemExecutionTask.FinalDeadline == _obj.Deadline && actionItem.Deadline.HasValue)
                {
                    actionItem.Deadline = _obj.Deadline;
                }
                // Обновить исполнителя, если он изменен при рестарте.
                if (actionItem.ActionItemExecutionTask.Assignee != _obj.Assignee && actionItem.Assignee != _obj.Assignee)
                {
                    actionItem.Assignee = _obj.Assignee;
                }
            }

            if (_obj.ActionItemType == ActionItemType.Additional)
            {
                _obj.ActiveText = ActionItemExecutionTasks.Resources.SentToCoAssignee;
            }

            // Выдать права на изменение для возможности прекращения задачи.
            Functions.ActionItemExecutionTask.GrantAccessRightToTask(_obj, _obj);

            if (_obj.IsDraftResolution == true && !_obj.DocumentsGroup.OfficialDocuments.Any())
            {
                if (ReviewDraftResolutionAssignments.Is(_obj.ParentAssignment))
                {
                    _obj.DocumentsGroup.OfficialDocuments.Add(ReviewDraftResolutionAssignments.As(_obj.ParentAssignment).DocumentForReviewGroup.OfficialDocuments.FirstOrDefault());
                }
                else
                {
                    _obj.DocumentsGroup.OfficialDocuments.Add(PreparingDraftResolutionAssignments.As(_obj.ParentAssignment).DocumentForReviewGroup.OfficialDocuments.FirstOrDefault());
                }
            }
        }
Esempio n. 9
0
 public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
 {
     Docflow.PublicFunctions.Module.ValidateTaskAuthor(_obj, e);
 }
Esempio n. 10
0
 public override void BeforeStart(Sungero.Workflow.Server.BeforeStartEventArgs e)
 {
     _obj.ThreadSubject = Sungero.SmartProcessing.Resources.VerificationTaskThreadSubject;
 }