public override System.Linq.Expressions.Expression <Func <IEvaluationContext, bool> > GetExpression() { var customerExpression = ConditionCutomerSegmentBlock.GetExpression(); var cartExpression = ConditionCartBlock.GetExpression(); return(customerExpression.And(cartExpression)); }
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(); }