Exemplo n.º 1
0
        /// <summary>
        /// Проверка возможности существования маршрута правила.
        /// </summary>
        /// <param name="route">Маршрут.</param>
        /// <param name="ruleConditions">Условие.</param>
        /// <param name="conditionStep">Этап.</param>
        /// <returns>Возможность существования.</returns>
        public override bool CheckRoutePossibility(List <Docflow.Structures.ApprovalRuleBase.RouteStep> route,
                                                   List <Docflow.Structures.ApprovalRuleBase.ConditionRouteStep> ruleConditions,
                                                   Docflow.Structures.ApprovalRuleBase.RouteStep conditionStep)
        {
            var possibleStage = base.CheckRoutePossibility(route, ruleConditions, conditionStep);
            var conditionType = _obj.Conditions.First(c => c.Number == conditionStep.StepNumber).Condition.ConditionType;

            // Проверка условий по типовому договору.
            if (conditionType == Sungero.Contracts.ContractCondition.ConditionType.Standard)
            {
                var standardConditions = this.GetStandardConditionsInRoute(route).Where(c => c.StepNumber != conditionStep.StepNumber).ToList();
                possibleStage = this.CheckStandardConditions(standardConditions, conditionStep);
            }

            return(possibleStage);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Проверить возможность существования данного маршрута с условиями по типовому договору.
        /// </summary>
        /// <param name="allConditions">Все условия в данном маршруте.</param>
        /// <param name="condition">Текущее условие.</param>
        /// <returns>Возможность существования данного маршрута.</returns>
        public bool CheckStandardConditions(List <Docflow.Structures.ApprovalRuleBase.RouteStep> allConditions, Docflow.Structures.ApprovalRuleBase.RouteStep condition)
        {
            foreach (var previousCondition in allConditions.TakeWhile(x => !Equals(x, condition)))
            {
                return(previousCondition.Branch == condition.Branch);
            }

            return(true);
        }