Example #1
0
        /// <summary>
        /// Evaluate this instance.
        /// </summary>
        /// <param name="condition">The condition to consider.</param>
        /// <param name="scriptInterpreter">Script interpreter.</param>
        /// <param name="scriptVariableSet">The script variable set used to evaluate.</param>
        /// <returns>True if this instance is true.</returns>
        private static bool Evaluate(
            this AdvancedCondition condition,
            IBdoScriptInterpreter scriptInterpreter,
            IScriptVariableSet scriptVariableSet)
        {
            if (condition == null)
            {
                return(false);
            }

            bool isAllConditionSatisfied = true;

            foreach (Condition subCondition in condition.Conditions)
            {
                switch (condition.Kind)
                {
                case AdvancedConditionKind.And:
                    isAllConditionSatisfied &= subCondition.Evaluate(scriptInterpreter, scriptVariableSet);
                    break;

                case AdvancedConditionKind.Or:
                    isAllConditionSatisfied |= subCondition.Evaluate(scriptInterpreter, scriptVariableSet);
                    break;

                default:
                    break;
                }
            }

            return(isAllConditionSatisfied == condition.TrueValue);
        }
Example #2
0
        // ------------------------------------------
        // ACCESSORS
        // ------------------------------------------

        #region

        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <param name="areas">The areas to consider.</param>
        public override object Clone(params string[] areas)
        {
            AdvancedCondition advancedBusinessCondition = new AdvancedCondition();

            advancedBusinessCondition.Conditions.AddRange(Conditions.Select(p => p.Clone() as Condition));

            return(advancedBusinessCondition);
        }