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