예제 #1
0
        public override RuleCondition <T> GetCondition <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext)
        {
            var condition = new StringCompareCondition <T>();
            var left      = adaptiveCondition.GetLeftValue(ruleContext);

            if (left != null)
            {
                condition.LeftValue = left.ToString();
            }
            var right = adaptiveCondition.GetRightValue(ruleContext);

            if (right != null)
            {
                condition.RightValue = right.ToString();
            }
            if (adaptiveCondition.Operator == Sitecore.Strategy.Adaptive.Items.ItemIDs.BooleanOperatorTrue)
            {
                adaptiveCondition.Operator = Sitecore.Strategy.Adaptive.Items.ItemIDs.StringOperatorTrue;
            }
            else if (adaptiveCondition.Operator == Sitecore.Strategy.Adaptive.Items.ItemIDs.BooleanOperatorFalse)
            {
                adaptiveCondition.Operator = Sitecore.Strategy.Adaptive.Items.ItemIDs.StringOperatorFalse;
            }
            condition.OperatorId = adaptiveCondition.Operator.ToString();
            return(condition);
        }
        public override RuleCondition <T> GetRuleCondition <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext)
        {
            Assert.ArgumentNotNull(type, "type");
            var selectorConfig = this.MacroConfiguration.GetMacroSelectorConfig(type);

            Assert.IsNotNull(selectorConfig, "selectorConfig");
            var selector = selectorConfig.GetConditionSelector(type);

            if (selector == null)
            {
                return(null);
            }
            var condition = selector.GetCondition <T>(type, adaptiveCondition, ruleContext);

            return(condition);
        }
 public override RuleCondition<T> GetCondition<T>(Type type, BaseAdaptiveConditionBase<T> adaptiveCondition, T ruleContext) 
 {
     var condition = new NumberCompareCondition<T>();
     var left = adaptiveCondition.GetLeftValue(ruleContext);
     if (left != null) 
     {
         condition.LeftValue = float.Parse(left.ToString());
     }
     var right = adaptiveCondition.GetRightValue(ruleContext);
     if (right != null) 
     {
         condition.RightValue= float.Parse(right.ToString());
     }
     condition.OperatorId = adaptiveCondition.Operator.ToString();
     return condition;
 }
        public override RuleCondition <T> GetCondition <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext)
        {
            var condition = new DateTimeCompareCondition <T>();
            var left      = adaptiveCondition.GetLeftValue(ruleContext);

            if (left != null)
            {
                condition.LeftValue = DateUtil.ParseDateTime(left.ToString(), DateTime.MinValue);
            }
            var right = adaptiveCondition.GetRightValue(ruleContext);

            if (right != null)
            {
                condition.RightValue = DateUtil.ParseDateTime(right.ToString(), DateTime.MinValue);
            }
            condition.OperatorId = adaptiveCondition.Operator.ToString();
            return(condition);
        }
        public override RuleCondition <T> GetCondition <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext)
        {
            var condition = new StringCompareCondition <T>();

            if (adaptiveCondition == null)
            {
                Log.Error($"{nameof(adaptiveCondition)} cannot be null in GetCondition. For type: '{type}'", this);
                throw new NullReferenceException($"{nameof(adaptiveCondition)} cannot be null");
            }
            if (ruleContext == null)
            {
                Log.Error($"{nameof(ruleContext)} cannot be null in GetCondition. For type: '{type}'", this);
                throw new NullReferenceException($"{nameof(ruleContext)} cannot be null");
            }

            var left = adaptiveCondition.GetLeftValue(ruleContext);

            if (left != null)
            {
                condition.LeftValue = left.ToString();
            }
            var right = adaptiveCondition.GetRightValue(ruleContext);

            if (right != null)
            {
                condition.RightValue = right.ToString();
            }
            if (adaptiveCondition.Operator == Sitecore.Strategy.Adaptive.Items.ItemIDs.BooleanOperatorTrue)
            {
                adaptiveCondition.Operator = Sitecore.Strategy.Adaptive.Items.ItemIDs.StringOperatorTrue;
            }
            else if (adaptiveCondition.Operator == Sitecore.Strategy.Adaptive.Items.ItemIDs.BooleanOperatorFalse)
            {
                adaptiveCondition.Operator = Sitecore.Strategy.Adaptive.Items.ItemIDs.StringOperatorFalse;
            }
            condition.OperatorId = adaptiveCondition.Operator.ToString();
            return(condition);
        }
        public override Expression <Func <IndexedContact, bool> > GetRulePredicate <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext)
        {
            Assert.ArgumentNotNull(type, "type");
            var selectorConfig = this.MacroConfiguration.GetMacroSelectorConfig(type);

            Assert.IsNotNull(selectorConfig, "selectorConfig");
            var selector = selectorConfig.GetConditionSelector(type);

            if (selector == null)
            {
                return(null);
            }
            return(selector.GetPredicate <T>(type, adaptiveCondition, ruleContext));
        }
        public override Expression<Func<IndexedContact, bool>> GetPredicate<T>(Type type, BaseAdaptiveConditionBase<T> adaptiveCondition, T ruleContext)
        {
            var leftFacetName = adaptiveCondition.GetLeftValue(ruleContext).ToString();

            object right = adaptiveCondition.GetRightValue(ruleContext);
            if (right == null)
                return null;
            float rightInt;
            if (!float.TryParse(right.ToString(), out rightInt))
            {
                return null;
            }

            var conditionOperator = ConditionUtility.GetConditionOperatorById(adaptiveCondition.Operator.ToString());
            return GetCompareExpression<float>(conditionOperator, c => (float)c[(ObjectIndexerKey)leftFacetName], rightInt);
        }        
예제 #8
0
 public abstract Expression <Func <IndexedContact, bool> > GetPredicate <T>(Type type,
                                                                            BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext) where T : RuleContext;
예제 #9
0
 public abstract RuleCondition <T> GetCondition <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition,
                                                    T ruleContext) where T : RuleContext;
예제 #10
0
        public override Expression <Func <IndexedContact, bool> > GetPredicate <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext)
        {
            var leftFacetName = adaptiveCondition.GetLeftValue(ruleContext).ToString();

            var right = adaptiveCondition.GetRightValue(ruleContext).ToString();

            if (right == null)
            {
                return(null);
            }

            if (adaptiveCondition.Operator == Sitecore.Strategy.Adaptive.Items.ItemIDs.BooleanOperatorTrue)
            {
                adaptiveCondition.Operator = Sitecore.Strategy.Adaptive.Items.ItemIDs.StringOperatorTrue;

                /*return StringConditionOperator.Contains.Compare<IndexedContact>(
                 *      c => (string) c[(ObjectIndexerKey)leftFacetName], right);*/
            }
            else if (adaptiveCondition.Operator == Sitecore.Strategy.Adaptive.Items.ItemIDs.BooleanOperatorFalse)
            {
                adaptiveCondition.Operator = Sitecore.Strategy.Adaptive.Items.ItemIDs.StringOperatorFalse;

                /*return StringConditionOperator.Contains.Compare<IndexedContact>(
                 *      c => (string)c[(ObjectIndexerKey)leftFacetName], right);*/
            }
            var conditionOperator = ConditionUtility.GetStringConditionOperatorById(adaptiveCondition.Operator.ToString());

            return(conditionOperator.Compare <IndexedContact>(c => (string)c[(ObjectIndexerKey)leftFacetName], right));
        }
        public override Expression <Func <IndexedContact, bool> > GetPredicate <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext)
        {
            var leftFacetName = adaptiveCondition.GetLeftValue(ruleContext).ToString();

            object right = adaptiveCondition.GetRightValue(ruleContext);

            if (right == null)
            {
                return(null);
            }
            DateTime rightDateTime;

            rightDateTime = DateUtil.ParseDateTime(right.ToString(), DateTime.MinValue);
            if (rightDateTime == DateTime.MinValue)
            {
                return(null);
            }

            var conditionOperator = ConditionUtility.GetConditionOperatorById(adaptiveCondition.Operator.ToString());

            return(GetCompareExpression <DateTime>(conditionOperator, c => (DateTime)c[(ObjectIndexerKey)leftFacetName], rightDateTime));
        }