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