Esempio n. 1
0
 public static void DeleteStage(IApprovalStage stage)
 {
     if (stage != null)
     {
         ApprovalStages.Delete(stage);
     }
 }
Esempio n. 2
0
        public static List <IEmployee> GetStagePerformers(IApprovalTask task,
                                                          IApprovalStage stage,
                                                          List <Sungero.CoreEntities.IRecipient> additionalApprovers)
        {
            var recipients = Functions.ApprovalStage.GetStageRecipients(stage, task, additionalApprovers);
            var performers = Docflow.Functions.Module.GetEmployeesFromRecipients(recipients);

            return(performers.Distinct().ToList());
        }
Esempio n. 3
0
 public static IEmployee GetStagePerformer(IApprovalTask task, IApprovalStage stage, IEmployee signatory, IEmployee addressee)
 {
     if (stage.AssigneeType == Docflow.ApprovalStage.AssigneeType.Role)
     {
         return(Functions.ApprovalRoleBase.GetRolePerformer(stage.ApprovalRole, task));
     }
     else
     {
         return(Functions.ApprovalRuleBase.GetEmployeeByAssignee(stage.Assignee));
     }
 }
Esempio n. 4
0
        public static bool ClerkCanRegister(IApprovalStage registerStage)
        {
            var canRegister = true;
            var clerk       = Functions.ApprovalRuleBase.GetEmployeeByAssignee(registerStage.Assignee);

            if (registerStage.StageType == StageType.Register && clerk != null)
            {
                canRegister = IncomingDocumentBases.AccessRights.CanRegister(clerk) || OutgoingDocumentBases.AccessRights.CanRegister(clerk) ||
                              InternalDocumentBases.AccessRights.CanRegister(clerk) || ContractualDocumentBases.AccessRights.CanRegister(clerk);
            }
            return(canRegister);
        }
Esempio n. 5
0
 public static IEmployee GetStagePerformer(IApprovalTask task, IApprovalStage stage)
 {
     return(GetStagePerformer(task, stage, null, null));
 }
Esempio n. 6
0
 public static bool HasRules(IApprovalStage stage)
 {
     return(ApprovalRuleBases.GetAll(r => r.Stages.Any(s => s.Stage == stage)).Any());
 }
Esempio n. 7
0
 public static List <IEmployee> GetStagePerformers(IApprovalTask task, IApprovalStage stage)
 {
     return(GetStagePerformers(task, stage, null));
 }
        /// <summary>
        /// Получить согласующих, которые будут реально согласовывать на текущей итерации.
        /// </summary>
        /// <param name="task">Задача согласования.</param>
        /// <param name="stage">Этап согласования (обязательных или доп. согласующих).</param>
        /// <returns>Согласующие.</returns>
        public static List <Company.IEmployee> GetCurrentIterationEmployees(IApprovalTask task, IApprovalStage stage)
        {
            var result = new List <Company.IEmployee>();
            var lastReworkAssignment = Functions.ApprovalTask.GetLastReworkAssignment(task);

            if (lastReworkAssignment != null)
            {
                Logger.DebugFormat("Find last rework assignment id {0}.", lastReworkAssignment.Id);
            }

            var approvers = Docflow.PublicFunctions.ApprovalStage.Remote.GetStagePerformers(task, stage);

            // Исключить согласующих, если они уже подписали документ, либо в последнем задании на доработку было указано, что повторно не отправлять.
            foreach (var approver in approvers)
            {
                Logger.DebugFormat("Find approver id {0}.", approver.Id);
                if (lastReworkAssignment == null ||
                    lastReworkAssignment.Approvers.Any(a => Equals(a.Approver, approver) && a.Action == Sungero.Docflow.ApprovalReworkAssignmentApprovers.Action.SendForApproval) ||
                    !lastReworkAssignment.Approvers.Any(a => Equals(a.Approver, approver)))
                {
                    if (!Functions.ApprovalTask.HasValidSignature(task, approver))
                    {
                        Logger.DebugFormat("Add approver id {0} to current iteration employees.", approver.Id);
                        result.Add(approver);
                    }
                }
            }

            return(result);
        }