Ejemplo n.º 1
0
        public override System.Linq.Expressions.Expression <Func <IEvaluationContext, bool> > GetExpression()
        {
            var customerExpression = ConditionCutomerSegmentBlock.GetExpression();
            var cartExpression     = ConditionCartBlock.GetExpression();

            return(customerExpression.And(cartExpression));
        }
Ejemplo n.º 2
0
        private void InitializeAvailableExpressions()
        {
            var availableElements = new Func <CompositeElement>[] {
                () => new ConditionIsEveryone(ExpressionViewModel),
                () => new ConditionIsFirstTimeBuyer(ExpressionViewModel),
                () => new ConditionIsRegisteredUser(ExpressionViewModel)
            };

            ConditionCutomerSegmentBlock.WithAvailabeChildren(availableElements);
            ConditionCutomerSegmentBlock.NewChildLabel      = "+ add usergroup".Localize(null, LocalizationScope.DefaultCategory);
            ConditionCutomerSegmentBlock.IsChildrenRequired = true;
            ConditionCutomerSegmentBlock.ErrorMessage       = "Cart promotion requires at least one eligibility".Localize();

            availableElements = new Func <CompositeElement>[] {
                () => new ConditionAtNumItemsInCart(ExpressionViewModel),
                () => new ConditionAtNumItemsInCategoryAreInCart(ExpressionViewModel),
                () => new ConditionAtNumItemsOfEntryAreInCart(ExpressionViewModel),
                () => new ConditionCodeContains(ExpressionViewModel),
                () => new ConditionLineItemTotal(ExpressionViewModel),
                () => new ConditionCartSubtotalLeast(ExpressionViewModel),
                () => new ConditionCurrencyIs(ExpressionViewModel)
            };
            ConditionCartBlock.WithAvailabeChildren(availableElements);
            ConditionCartBlock.NewChildLabel = "+ add condition".Localize(null, LocalizationScope.DefaultCategory);

            availableElements = new Func <CompositeElement>[] {
                () => {                //Cart item discounts menu items
                    var group = new CompositeElement {
                        DisplayName = "Cart item discount".Localize()
                    };
                    group.AvailableChildrenGetters.AddRange(new Func <ExpressionElement>[] {
                        () => new ActionCartItemGetOfRelForNum(ExpressionViewModel),
                        () => new ActionCartItemGetOfAbsForNum(ExpressionViewModel),
                        () => new ActionCartItemGetOfRelForNumInCategory(ExpressionViewModel),
                        () => new ActionCartItemGetOfAbsForNumInCategory(ExpressionViewModel),
                        () => new ActionCartItemGetOfRelForNumInEntry(ExpressionViewModel),
                        () => new ActionCartItemGetOfAbsForNumInEntry(ExpressionViewModel),
                        () => new ActionCartItemGetFreeNumItemOfSku(ExpressionViewModel)
                    });
                    return(group);
                },
                () => {                //Cart subtotal discounts menu items
                    var group = new CompositeElement {
                        DisplayName = "Cart subtotal discount".Localize()
                    };
                    group.AvailableChildrenGetters.AddRange(new Func <ExpressionElement>[] {
                        () => new ActionCartGetOfRelSubtotal(ExpressionViewModel),
                        () => new ActionCartGetOfAbsSubtotal(ExpressionViewModel)
                    });
                    return(group);
                },
                () => {                //Shipping discounts menu items
                    var group = new CompositeElement {
                        DisplayName = "Shipping discount".Localize()
                    };
                    group.AvailableChildrenGetters.AddRange(new Func <ExpressionElement>[] {
                        () => new ActionShippingGetOfRelShippingMethod(ExpressionViewModel),
                        () => new ActionShippingGetOfAbsShippingMethod(ExpressionViewModel)
                    });
                    return(group);
                }
            };
            ActionBlock.WithAvailabeChildren(availableElements);
            ActionBlock.NewChildLabel      = "+ add effect".Localize(null, LocalizationScope.DefaultCategory);
            ActionBlock.IsChildrenRequired = true;
            ActionBlock.ErrorMessage       = "Promotion requires at least one reward".Localize();
        }