/// <summary> /// Evaluates the set of business rules applying to a given situation. /// </summary> /// <param name="situation">Situation to which business rules are applied.</param> /// <param name="item">Parameter of the situation (typically the entity that is /// subject to the business process).</param> /// <param name="failedRules">Collection to which should be added the business rules /// that failed, or <b>null</b> if this information is not requested.</param> /// <returns><b>true</b> if all rules were successful, otherwise <b>false</b>.</returns> public static bool Evaluate(string situation, object item, BusinessRuleCollection failedRules) { if (situation == null) { throw new ArgumentNullException("situation"); } List <BusinessRule> businessRulesForThisSituation; if (!businessRules.TryGetValue(situation, out businessRulesForThisSituation)) { return(true); } else { bool success = true; foreach (BusinessRule rule in businessRulesForThisSituation) { if (rule.Evaluate(item)) { continue; } success = false; if (failedRules != null) { failedRules.Add(rule); } } return(success); } }
/// <summary> /// Throws an exception when fails at least one of the business rules applying to a /// given situation. /// </summary> /// <param name="situation">Situation to which business rules are applied.</param> /// <param name="item">Parameter of the situation (typically the entity that is /// subject to the business process).</param> /// <exception cref="BusinessRuleException">At least one of the business rules was /// not fulfilled.</exception> public static void Assert(string situation, object item) { BusinessRuleCollection failedRules = new BusinessRuleCollection(); if (!Evaluate(situation, item, failedRules)) { throw new BusinessRuleException(failedRules); } }
private void ThrowExceptionIfUserIsInvalid(Domain.User.User newUser) { var brokenRules = new BusinessRuleCollection(_userValidator.GetBrokenRules(newUser)); if (brokenRules.HasRules()) { throw new ValidationException(brokenRules.GetRulesSummary()); } }
private void ThrowExceptionIfTaskIsInvalid(Domain.Task.Task newTask) { var brokenRules = new BusinessRuleCollection(_taskValidator.GetBrokenRules(newTask)); if (brokenRules.HasRules()) { throw new ValidationException(brokenRules.GetRulesSummary()); } }
public void AddRulesTest() { var rule = new BusinessRule { Description = "test" }; var rules = new BusinessRuleCollection(); rules.AddRule(rule); Assert.IsTrue(rules.HasRules()); }
public void GetRulesSummaryTest() { var rule1 = new BusinessRule { Description = "test1" }; var rule2 = new BusinessRule { Description = "test2" }; var rules = new BusinessRuleCollection(); rules.AddRule(rule1); rules.AddRule(rule2); var expected = "test1" + Environment.NewLine + "test2"; Assert.AreEqual(expected, string.Join(Environment.NewLine, rules.GetRulesSummary())); }