private List <ConditionalRule> BuildConditionalRuleSet() { List <ConditionalRule> conditionalRules = new List <ConditionalRule>(); foreach (var fieldControl in this.FieldControls) { IConditionalFormControl lfc = fieldControl as IConditionalFormControl; if (lfc != null && lfc.UsesConditionalLogic == true) { ConditionalRule conditionalRule = new ConditionalRule(); conditionalRule.Target = lfc.TargetId; conditionalRule.Action = lfc.Action == 0 ? "Show" : "Hide"; conditionalRule.Bool = lfc.Quantity == 0 ? "OR" : "AND"; List <CriteriaItem> checks = Helpers.DeserializeJSON <List <CriteriaItem> >(lfc.CriteriaSet); conditionalRule.Fields = checks.Select(ci => ((IConditionalFormControl)this.FieldControls.Where(fc => fc.MetaField.FieldName == ci.FieldName).First()).TargetId).Distinct().ToArray(); conditionalRule.Checks = checks.Select(ci => new CriteriaItem() { Field = ((IConditionalFormControl)this.FieldControls.Where(fc => fc.MetaField.FieldName == ci.FieldName).First()).TargetId, Condition = ci.Condition, Option = ci.Option }).ToList(); conditionalRules.Add(conditionalRule); } } return(conditionalRules); }
public void Can_Do_Complex_Rule() { var rule1 = new ConditionalRule(new FuncCondition <object>(t => true)) { Name = "rule1" }; var rule2 = new ConditionalRule(new FuncCondition <object>(t => false)) { Name = "rule2" }; var rule3 = new ConditionalRule(new FuncCondition <object>(t => true)) { Name = "rule3" }; var rule4 = new ConditionalRule(new FuncCondition <object>(t => false)) { Name = "rule4" }; var rule5 = new ConditionalRule(new FuncCondition <object>(t => true)) { Name = "rule5" }; var rule6 = new ConditionalRule(new FuncCondition <object>(t => false)) { Name = "rule6" }; var rule = (rule1 & rule2) | ((rule3 | rule4) & (rule5 | rule6)); Assert.IsTrue(rule.Evaluate(10)); }
public void Can_Add_Rules() { var rule1 = new ConditionalRule(new FuncCondition<object>(t => true)); var rule2 = new ConditionalRule(new FuncCondition<object>(t => false)); var rule = rule1 & rule2; Assert.IsFalse(rule.Evaluate(10)); }
public void Can_Evaluate_Expression_As_ConditionalRule() { var statement = "return (this.Price > 20 or this.Price < 15)"; var order = new Order { Price = 10, Message = "Soemthing" }; EvaluatorAccessPoint.DslConditionEvaluator = evaluator; var condition = new DslCondition { DslStatement = statement }; var rule = new ConditionalRule(condition); Assert.IsTrue(rule.Evaluate(order)); }
public void Can_Add_Rules() { var rule1 = new ConditionalRule(new FuncCondition <object>(t => true)); var rule2 = new ConditionalRule(new FuncCondition <object>(t => false)); var rule = rule1 & rule2; Assert.IsFalse(rule.Evaluate(10)); }
public void Can_Do_Complex_Rule() { var rule1 = new ConditionalRule(new FuncCondition<object>(t => true)){ Name = "rule1" }; var rule2 = new ConditionalRule(new FuncCondition<object>(t => false)) { Name = "rule2" }; var rule3 = new ConditionalRule(new FuncCondition<object>(t => true)) { Name = "rule3" }; var rule4 = new ConditionalRule(new FuncCondition<object>(t => false)) { Name = "rule4" }; var rule5 = new ConditionalRule(new FuncCondition<object>(t => true)) { Name = "rule5" }; var rule6 = new ConditionalRule(new FuncCondition<object>(t => false)) { Name = "rule6" }; var rule = (rule1 & rule2) | ( (rule3 | rule4) & (rule5 | rule6) ); Assert.IsTrue(rule.Evaluate(10)); }
private List <ConditionalRule> BuildConditionalRuleSet() { List <ConditionalRule> conditionalRules = new List <ConditionalRule>(); IControlsContainer cc = FManager.GetForm(this.FormId); List <ControlData> formControls = (List <ControlData>) typeof(PageHelper) .GetMethod("SortControls", BindingFlags.Static | BindingFlags.NonPublic) .Invoke(null, new object[] { new[] { cc }, 1 }); formControls.RemoveAll(fc => fc.ObjectType == "Telerik.Sitefinity.Modules.Forms.Web.UI.Fields.FormSubmitButton, Telerik.Sitefinity" || fc.IsLayoutControl == true); CultureInfo uiCulture = null; if (Config.Get <ResourcesConfig>().Multilingual) { uiCulture = System.Globalization.CultureInfo.CurrentUICulture; } foreach (var fieldControl in formControls) { var fc1 = FManager.LoadControl(fieldControl, uiCulture); IConditionalFormControl lfc = fc1 as IConditionalFormControl; if (lfc != null && lfc.UsesConditionalLogic == true) { ConditionalRule conditionalRule = new ConditionalRule(); conditionalRule.Target = lfc.TargetId; conditionalRule.Action = lfc.Action == 0 ? "Show" : "Hide"; conditionalRule.Bool = lfc.Quantity == 0 ? "OR" : "AND"; List <CriteriaItem> checks = Helpers.DeserializeJSON <List <CriteriaItem> >(lfc.CriteriaSet); conditionalRule.Fields = checks.Select(ci => ((IConditionalFormControl)this.FieldControls.Where(fc => ((SimpleScriptView)fc).ID == ci.FieldId).Single()).TargetId).Distinct().ToArray(); conditionalRule.Checks = checks.Select(ci => new CriteriaItem() { Field = ((IConditionalFormControl)this.FieldControls.Where(fc => ((SimpleScriptView)fc).ID == ci.FieldId).Single()).TargetId, Condition = ci.Condition, Option = ci.Option }).ToList(); conditionalRules.Add(conditionalRule); } } return(conditionalRules); }
public void Can_Evaluate_Expression_As_ConditionalRule() { var statement = "return (this.Price > 20 or this.Price < 15)"; var order = new Order { Price = 10, Message = "Soemthing" }; EvaluatorAccessPoint.DslConditionEvaluator = evaluator; var condition = new DslCondition { DslStatement = statement }; var rule = new ConditionalRule(condition); Assert.IsTrue(rule.Evaluate(order)); }
private List<ConditionalRule> BuildConditionalRuleSet() { List<ConditionalRule> conditionalRules = new List<ConditionalRule>(); foreach (var fieldControl in this.FieldControls) { IConditionalFormControl lfc = fieldControl as IConditionalFormControl; if (lfc != null && lfc.UsesConditionalLogic == true) { ConditionalRule conditionalRule = new ConditionalRule(); conditionalRule.Target = lfc.TargetId; conditionalRule.Action = lfc.Action == 0 ? "Show" : "Hide"; conditionalRule.Bool = lfc.Quantity == 0 ? "OR" : "AND"; List<CriteriaItem> checks = Helpers.DeserializeJSON<List<CriteriaItem>>(lfc.CriteriaSet); conditionalRule.Fields = checks.Select(ci => ((IConditionalFormControl)this.FieldControls.Where(fc => fc.MetaField.FieldName == ci.FieldName).First()).TargetId).Distinct().ToArray(); conditionalRule.Checks = checks.Select(ci => new CriteriaItem() { Field = ((IConditionalFormControl)this.FieldControls.Where(fc => fc.MetaField.FieldName == ci.FieldName).First()).TargetId, Condition = ci.Condition, Option = ci.Option }).ToList(); conditionalRules.Add(conditionalRule); } } return conditionalRules; }
public static ConditionalRule CreateConditionalRule(long ID, long ruleGroupId, long issuerId, long conditionIssuerId, bool systemReserved) { ConditionalRule conditionalRule = new ConditionalRule(); conditionalRule.Id = ID; conditionalRule.RuleGroupId = ruleGroupId; conditionalRule.IssuerId = issuerId; conditionalRule.ConditionIssuerId = conditionIssuerId; conditionalRule.SystemReserved = systemReserved; return conditionalRule; }
public void AddToConditionalRules(ConditionalRule conditionalRule) { base.AddObject("ConditionalRules", conditionalRule); }
private List<ConditionalRule> BuildConditionalRuleSet() { List<ConditionalRule> conditionalRules = new List<ConditionalRule>(); IControlsContainer cc = FManager.GetForm(this.FormId); List<ControlData> formControls = (List<ControlData>)typeof(PageHelper) .GetMethod("SortControls", BindingFlags.Static | BindingFlags.NonPublic) .Invoke(null, new object[] { new[] { cc }, 1 }); formControls.RemoveAll(fc => fc.ObjectType == "Telerik.Sitefinity.Modules.Forms.Web.UI.Fields.FormSubmitButton, Telerik.Sitefinity" || fc.IsLayoutControl == true); CultureInfo uiCulture = null; if (Config.Get<ResourcesConfig>().Multilingual) { uiCulture = System.Globalization.CultureInfo.CurrentUICulture; } foreach (var fieldControl in formControls) { var fc1 = FManager.LoadControl(fieldControl, uiCulture); IConditionalFormControl lfc = fc1 as IConditionalFormControl; if (lfc != null && lfc.UsesConditionalLogic == true) { ConditionalRule conditionalRule = new ConditionalRule(); conditionalRule.Target = lfc.TargetId; conditionalRule.Action = lfc.Action == 0 ? "Show" : "Hide"; conditionalRule.Bool = lfc.Quantity == 0 ? "OR" : "AND"; List<CriteriaItem> checks = Helpers.DeserializeJSON<List<CriteriaItem>>(lfc.CriteriaSet); conditionalRule.Fields = checks.Select(ci => ((IConditionalFormControl)this.FieldControls.Where(fc => ((SimpleScriptView)fc).ID == ci.FieldId).Single()).TargetId).Distinct().ToArray(); conditionalRule.Checks = checks.Select(ci => new CriteriaItem() { Field = ((IConditionalFormControl)this.FieldControls.Where(fc => ((SimpleScriptView)fc).ID == ci.FieldId).Single()).TargetId, Condition = ci.Condition, Option = ci.Option }).ToList(); conditionalRules.Add(conditionalRule); } } return conditionalRules; }