public RuleExpressionResult Evaluate(RuleExecution execution)
        {
            //StringComparer.CurrentCultureIgnoreCase;

            RuleValidation rv = new RuleValidation(execution.ThisObject.GetType(), null);

            ValidateExpression(rv, _containsMethodInvocationExpression, false);

            RuleExpressionResult singleResult = Evaluate(execution, _containsMethodInvocationExpression);

            if (rv.Errors.Count > 0)
            {
                ValidationErrorCollection errors = rv.Errors;

                string validationErrorMessages = Helper.GetErrorMessageFromValidationErrorsCollection(errors);

                throw new Exception(validationErrorMessages);
            }

            bool boolSingleResult = (bool)singleResult.Value;

            if (boolSingleResult)
            {
                return(resultTrue);
            }

            else
            {
                return(resultFalse);
            }
        }
        public override void Execute(RuleExecution context)
        {
            //we passed in at definition time what the code expressions for various properties are
            //then they are evaluated so this.PropertyName for example would now be "the value of the property" if we passed
            //in a CodePrimitiveExpression like "true" or "false" or "1" etc those values would now be here

            RuleExpressionResult applicationIDResult = RuleExpressionWalker.Evaluate(context, _applicationID);
            RuleExpressionResult typeIDResult        = RuleExpressionWalker.Evaluate(context, _typeID);
            RuleExpressionResult ruleIDResult        = RuleExpressionWalker.Evaluate(context, _ruleID);
            RuleExpressionResult ruleNameResult      = RuleExpressionWalker.Evaluate(context, _ruleName);
            RuleExpressionResult resultResult        = RuleExpressionWalker.Evaluate(context, _result);
            RuleExpressionResult createDateResult    = RuleExpressionWalker.Evaluate(context, _createDate);
            RuleExpressionResult referenceIDResult   = RuleExpressionWalker.Evaluate(context, _referenceID);


            //this is where the work is actually done
            if (applicationIDResult != null && ruleIDResult != null && ruleNameResult != null && resultResult != null &&
                createDateResult != null)
            {
                RuleStats ruleStats = new RuleStats();

                ruleStats.Insert((Guid)applicationIDResult.Value, (Guid)typeIDResult.Value, (Guid)ruleIDResult.Value, (string)ruleNameResult.Value, (bool)resultResult.Value, (DateTime)createDateResult.Value,
                                 (Guid)referenceIDResult.Value);
            }
        }
Esempio n. 3
0
        public RuleExpressionResult Evaluate(RuleExecution execution)
        {
            RuleValidation rv = new RuleValidation(execution.ThisObject.GetType(), null);

            ValidateExpression(rv, _logicalAndExpression, false);

            // start by doing the first 2 expressions
            RuleExpressionResult singleResult = Evaluate(execution, _logicalAndExpression);

            if (rv.Errors.Count > 0)
            {
                ValidationErrorCollection errors = rv.Errors;

                string validationErrorMessages = Helper.GetErrorMessageFromValidationErrorsCollection(errors);

                throw new Exception(validationErrorMessages);
            }

            // start by doing the first 2 expressions

            bool boolSingleResult = (bool)singleResult.Value;

            if (boolSingleResult)
            {
                // left and right true
                return(resultTrue);
            }

            else
            {
                //either left or right or both are false
                return(resultFalse);
            }
        }
Esempio n. 4
0
        public RuleExpressionResult Evaluate(RuleExecution execution)
        {
            RuleValidation rv = new RuleValidation(execution.ThisObject.GetType(), null);

            ValidateExpression(rv, _singleExpression, false);

            // start by doing the first 2 expressions
            RuleExpressionResult singleResult = Evaluate(execution, _singleExpression);

            if (rv.Errors.Count > 0)
            {
                ValidationErrorCollection errors = rv.Errors;

                string validationErrorMessages = Helper.GetErrorMessageFromValidationErrorsCollection(errors);

                throw new Exception(validationErrorMessages);
            }
            // start by doing the first 2 expressions

            bool boolSingleResult = (bool)singleResult.Value;

            bool negatedSingleResult = !boolSingleResult;

            if (negatedSingleResult)
            {
                // return negated value
                return(resultTrue);
            }

            else
            {
                //return negated value
                return(resultFalse);
            }
        }
        public RuleExpressionResult Evaluate(RuleExecution execution)
        {
            //StringComparer.CurrentCultureIgnoreCase;

            RuleValidation rv = new RuleValidation(execution.ThisObject.GetType(), null);

            ValidateExpression(rv, _binaryExpressionBasedOnComparisonType, false);



            // start by doing the first 2 expressions
            RuleExpressionResult singleResult = Evaluate(execution, _binaryExpressionBasedOnComparisonType);

            if (rv.Errors.Count > 0)
            {
                ValidationErrorCollection errors = rv.Errors;

                string validationErrorMessages = Helper.GetErrorMessageFromValidationErrorsCollection(errors);

                throw new Exception(validationErrorMessages);
            }
            // start by doing the first 2 expressions

            bool boolSingleResult = (bool)singleResult.Value;

            if (boolSingleResult)
            {
                return(resultTrue);
            }

            else
            {
                return(resultFalse);
            }
        }
Esempio n. 6
0
        public override void Execute(RuleExecution context)
        {
            RuleExpressionResult result = RuleExpressionWalker.Evaluate(context, _message);

            if (result != null)
            {
                Console.WriteLine(result.Value);
            }
        }
 public void AddEvaluationResult(string ruleIdGuidString, string ruleName, RuleExpressionResult result)
 {
     if (_translatedRuleSet)
     {
         Guid ruleId = new Guid(ruleIdGuidString);
         _evaluatedRules.Add(ruleId, result);
     }
     else
     {
         _nonTranslatedRulesEvaluatedRules.Add(ruleName, result);
     }
 }
Esempio n. 8
0
        private void EvaluateRule(Rule rule, ref MSRuleSetEvaluationResult ruleSetEvaluationResult, ref RuleValidation rv)
        {
            rv.Errors.Clear();

            IRuleExpression ruleExpression = (IRuleExpression)((RuleExpressionCondition)rule.Condition).Expression;

            RuleExecution      re   = new RuleExecution(rv, _instanceOfObject);
            RuleExpressionInfo info = RuleExpressionWalker.Validate(rv, (CodeExpression)ruleExpression, true);

            if (rv.Errors.Count > 0)
            {
                //string validationErrorMessages = Helper.GetErrorMessageFromValidationErrorsCollection(errors);

                ruleSetEvaluationResult.AddValidationError(rule.Name, rule.Description, rv.Errors);
            }
            else
            {
                RuleExpressionResult result = RuleExpressionWalker.Evaluate(re, (CodeExpression)ruleExpression);
                ruleSetEvaluationResult.AddEvaluationResult(rule.Name, rule.Description, result);
            }
        }
        public DotNetNancy.Rules.RuleSet.RuleSetDefinition.Action[] GetThenActions(Guid guid, RuleExpressionResult ruleExpressionResult)
        {
            DotNetNancy.Rules.RuleSet.RuleSetDefinition.Action[] thenActions = null;

            if (_translatedRuleSet)
            {
                thenActions = _ruleSetTranslationResult.GetThenActionsByRuleID(guid);
            }

            return(thenActions);
        }