private bool EvaluateWithOr(RuleConditionsCollection conditions)
        {
            if (conditions.Data != null && conditions.Data.Any())
            {
                if (conditions.Data.Where(condition => _validators.IsValid(condition))
                    .Any(Evaluate))
                {
                    return true;
                }
            }

            if (conditions.Conditions != null && conditions.Conditions.Any())
            {
                var result = false;
                foreach (RuleConditionsCollection conditioncollection in conditions.Conditions)
                {
                    if (_validators.IsValid(conditioncollection))
                        result = result || Evaluate(conditioncollection);

                    if (result)
                        return true;
                }
            }

            return false;
        }
Beispiel #2
0
 public Rule()
 {
     Conditions = new RuleConditionsCollection();
     OnSuccessResults = new RuleResultsCollection();
     OnFailureResults = new RuleResultsCollection();
 }
 private bool Evaluate(RuleConditionsCollection conditions)
 {
     var result = conditions.Or ? EvaluateWithOr(conditions) : EvaluateWithAnd(conditions);
     return result;
 }