Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
 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));
 }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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;
        }