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