示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        private void ThrowExceptionIfUserIsInvalid(Domain.User.User newUser)
        {
            var brokenRules = new BusinessRuleCollection(_userValidator.GetBrokenRules(newUser));

            if (brokenRules.HasRules())
            {
                throw new ValidationException(brokenRules.GetRulesSummary());
            }
        }
示例#4
0
        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()));
        }