コード例 #1
0
        private PromoDynamicExpressionTree GetDynamicExpression()
        {
            var customerConditionBlock = new BlockCustomerCondition();

            customerConditionBlock.AvailableChildren = new DynamicExpression[] { new ConditionIsEveryone(), new ConditionIsFirstTimeBuyer(),
                                                                                 new ConditionIsRegisteredUser() }.ToList();

            var catalogConditionBlock = new BlockCatalogCondition();

            catalogConditionBlock.AvailableChildren = new DynamicExpression[] { new ConditionEntryIs(), new ConditionCurrencyIs(),
                                                                                new  ConditionCodeContains(), new ConditionCategoryIs(), }.ToList();

            var cartConditionBlock = new BlockCartCondition();

            cartConditionBlock.AvailableChildren = new DynamicExpression[] { new ConditionCartSubtotalLeast(), new ConditionAtNumItemsInCart(),
                                                                             new ConditionAtNumItemsInCategoryAreInCart(), new ConditionAtNumItemsOfEntryAreInCart() }.ToList();
            var rewardBlock = new RewardBlock();

            rewardBlock.AvailableChildren = new DynamicExpression[] { new RewardCartGetOfAbsSubtotal(), new RewardItemGetFreeNumItemOfProduct(), new RewardItemGetOfAbs(),
                                                                      new RewardItemGetOfAbsForNum(), new RewardItemGetOfRel(), new RewardItemGetOfRelForNum(),
                                                                      new RewardItemGiftNumItem(), new RewardShippingGetOfAbsShippingMethod(), new RewardShippingGetOfRelShippingMethod() }.ToList();

            var rootBlockExpressions = new DynamicExpression[] { customerConditionBlock, catalogConditionBlock, cartConditionBlock, rewardBlock }.ToList();
            var retVal = new PromoDynamicExpressionTree()
            {
                Children          = rootBlockExpressions,
                AvailableChildren = rootBlockExpressions
            };

            return(retVal);
        }
コード例 #2
0
ファイル: Module.cs プロジェクト: adwardliu/vc-community
        private static PromoDynamicExpressionTree GetPromotionDynamicExpression()
        {
            var customerConditionBlock = new BlockCustomerCondition();
            customerConditionBlock.AvailableChildren = new DynamicExpression[] { new ConditionIsEveryone(), new ConditionIsFirstTimeBuyer(), 
																				  new ConditionIsRegisteredUser() }.ToList();

            var catalogConditionBlock = new BlockCatalogCondition();
            catalogConditionBlock.AvailableChildren = new DynamicExpression[] { new ConditionEntryIs(), new ConditionCurrencyIs(), 
																		       new  ConditionCodeContains(), new ConditionCategoryIs(), 
																			    }.ToList();

            var cartConditionBlock = new BlockCartCondition();
            cartConditionBlock.AvailableChildren = new DynamicExpression[] { new ConditionCartSubtotalLeast(), new ConditionAtNumItemsInCart(), 
																			 new ConditionAtNumItemsInCategoryAreInCart(), new ConditionAtNumItemsOfEntryAreInCart() }.ToList();
            var rewardBlock = new RewardBlock();
            rewardBlock.AvailableChildren = new DynamicExpression[] { new RewardCartGetOfAbsSubtotal(), new RewardItemGetFreeNumItemOfProduct(),  new RewardItemGetOfAbs(),
																	   new RewardItemGetOfAbsForNum(), new RewardItemGetOfRel(), new RewardItemGetOfRelForNum(),
																	   new RewardItemGiftNumItem(), new RewardShippingGetOfAbsShippingMethod(), new RewardShippingGetOfRelShippingMethod ()}.ToList();

            var rootBlocks = new DynamicExpression[] { customerConditionBlock, catalogConditionBlock, cartConditionBlock, rewardBlock }.ToList();
            var retVal = new PromoDynamicExpressionTree()
            {
                Children = rootBlocks,
            };
            return retVal;
        }
        public PromotionConditionAndRewardTreePrototype()
        {
            var blockCustomer = new BlockCustomerCondition()
                                .WithAvailConditions(
                new ConditionIsRegisteredUser(),
                new ConditionIsEveryone(),
                new ConditionIsFirstTimeBuyer(),
                new UserGroupsContainsCondition()
                );
            var blockCatalog = new BlockCatalogCondition()
                               .WithAvailConditions(
                new ConditionCategoryIs(),
                new ConditionCodeContains(),
                new ConditionCurrencyIs(),
                new ConditionEntryIs(),
                new ConditionInStockQuantity(),
                new ConditionHasNoSalePrice()
                );
            var blockCart = new BlockCartCondition()
                            .WithAvailConditions(
                new ConditionAtNumItemsInCart(),
                new ConditionAtNumItemsInCategoryAreInCart(),
                new ConditionAtNumItemsOfEntryAreInCart(),
                new ConditionCartSubtotalLeast()
                );
            var blockReward = new BlockReward()
                              .WithAvailConditions(
                new RewardCartGetOfAbsSubtotal(),
                new RewardCartGetOfRelSubtotal(),
                new RewardItemGetFreeNumItemOfProduct(),
                new RewardItemGetOfAbs(),
                new RewardItemGetOfAbsForNum(),
                new RewardItemGetOfRel(),
                new RewardItemGetOfRelForNum(),
                new RewardItemGiftNumItem(),
                new RewardShippingGetOfAbsShippingMethod(),
                new RewardShippingGetOfRelShippingMethod(),
                new RewardPaymentGetOfAbs(),
                new RewardPaymentGetOfRel(),
                new RewardItemForEveryNumInGetOfRel(),
                new RewardItemForEveryNumOtherItemInGetOfRel()
                );

            WithAvailConditions(
                blockCustomer,
                blockCatalog,
                blockCart,
                blockReward
                );
            WithChildrens(
                blockCustomer,
                blockCatalog,
                blockCart,
                blockReward
                );
        }
コード例 #4
0
        private static PromoDynamicExpressionTree GetPromotionDynamicExpression()
        {
            var customerConditionBlock = new BlockCustomerCondition
            {
                AvailableChildren = new DynamicExpression[]
                {
                    new ConditionIsEveryone(), new ConditionIsFirstTimeBuyer(),
                    new ConditionIsRegisteredUser(), new UserGroupsContainsCondition()
                }.ToList()
            };

            var catalogConditionBlock = new BlockCatalogCondition
            {
                AvailableChildren = new DynamicExpression[]
                {
                    new ConditionEntryIs(), new ConditionCurrencyIs(),
                    new ConditionCodeContains(), new ConditionCategoryIs(),
                    new ConditionInStockQuantity()
                }.ToList()
            };

            var cartConditionBlock = new BlockCartCondition
            {
                AvailableChildren = new DynamicExpression[]
                {
                    new ConditionCartSubtotalLeast(), new ConditionAtNumItemsInCart(),
                    new ConditionAtNumItemsInCategoryAreInCart(), new ConditionAtNumItemsOfEntryAreInCart(), new ConditionHasRecurringItems()
                }.ToList()
            };
            var rewardBlock = new RewardBlock
            {
                AvailableChildren = new DynamicExpression[]
                {
                    new RewardCartGetOfAbsSubtotal(), new RewardCartGetOfRelSubtotal(), new RewardItemGetFreeNumItemOfProduct(), new RewardItemGetOfAbs(),
                    new RewardItemGetOfAbsForNum(), new RewardItemGetOfRel(), new RewardItemGetOfRelForNum(),
                    new RewardItemGiftNumItem(), new RewardShippingGetOfAbsShippingMethod(), new RewardShippingGetOfRelShippingMethod(), new RewardPaymentGetOfAbs(),
                    new RewardPaymentGetOfRel(), new RewardItemForEveryNumInGetOfRel(), new RewardItemForEveryNumOtherItemInGetOfRel(),
                    new RewardRecurringItemGetOfRel(),
                }.ToList()
            };

            var rootBlocks = new DynamicExpression[] { customerConditionBlock, catalogConditionBlock, cartConditionBlock, rewardBlock }.ToList();
            var retVal = new PromoDynamicExpressionTree
            {
                Children = rootBlocks,
            };

            return(retVal);
        }
コード例 #5
0
        public void DynamicPromotion_Clone()
        {
            var blockCustomer = new BlockCustomerCondition()
                                .WithAvailConditions(
                new ConditionIsRegisteredUser(),
                new ConditionIsEveryone(),
                new ConditionIsFirstTimeBuyer(),
                new UserGroupsContainsCondition()
            {
                Group = "11"
            }
                );
            var blockCatalog = new BlockCatalogCondition()
                               .WithAvailConditions(
                new ConditionCategoryIs()
            {
                CategoryId = "11", CategoryName = "", ExcludingCategoryIds = new string[] { "1", "2" }, ExcludingProductIds = new string[] { "3", "4" }
            },
                new ConditionCodeContains()
            {
                Keyword = "keyword"
            },
                new ConditionCurrencyIs()
            {
                Currency = "USD"
            },
                new ConditionEntryIs()
            {
                ProductIds = new string[] { "1", "2" }, ProductNames = new string[] { "name1", "name2" }
            },
                new ConditionInStockQuantity()
            {
                CompareCondition = "CND", Quantity = 111, QuantitySecond = 222
            },
                new ConditionHasNoSalePrice()
                );
            var blockCart = new BlockCartCondition()
                            .WithAvailConditions(
                new ConditionAtNumItemsInCart()
            {
                CompareCondition = "CND", ExcludingCategoryIds = new string[] { "1", "2" }, ExcludingProductIds = new string[] { "3", "4" }, NumItem = 111, NumItemSecond = 222
            },
                new ConditionAtNumItemsInCategoryAreInCart()
            {
                CategoryId = "catid", CategoryName = "catname", CompareCondition = "CND", ExcludingCategoryIds = new string[] { "1", "2" }, ExcludingProductIds = new string[] { "3", "4" }, NumItem = 111, NumItemSecond = 222
            },
                new ConditionAtNumItemsOfEntryAreInCart()
            {
                CompareCondition = "CND", NumItem = 111, NumItemSecond = 222, ProductId = "Id", ProductName = "Name"
            },
                new ConditionCartSubtotalLeast()
            {
                CompareCondition = "CND", ExcludingCategoryIds = new string[] { "1", "2" }, ExcludingProductIds = new string[] { "3", "4" }, SubTotal = 111, SubTotalSecond = 222
            }
                );
            var blockReward = new BlockReward()
                              .WithAvailConditions(
                new RewardCartGetOfAbsSubtotal()
            {
                Amount = 444
            },
                new RewardCartGetOfRelSubtotal()
            {
                Amount = 444, MaxLimit = 555
            },
                new RewardItemGetFreeNumItemOfProduct()
            {
                NumItem = 55, ProductId = "Id", ProductName = "Name"
            },
                new RewardItemGetOfAbs()
            {
                Amount = 444, ProductId = "Id", ProductName = "Name"
            },
                new RewardItemGetOfAbsForNum()
            {
                Amount = 444, ProductId = "Id", ProductName = "Name", NumItem = 23
            },
                new RewardItemGetOfRel()
            {
                Amount = 444, ProductId = "Id", ProductName = "Name", MaxLimit = 23
            },
                new RewardItemGetOfRelForNum()
            {
                Amount = 444, ProductId = "Id", ProductName = "Name", MaxLimit = 23, NumItem = 32
            },
                new RewardItemGiftNumItem()
            {
                CategoryId = "catid", CategoryName = "catname", Description = "description", ProductId = "productId", ProductName = "ptoductName", Name = "Name", ImageUrl = "url:\\", MeasureUnit = "px", Quantity = 33
            },
                new RewardShippingGetOfAbsShippingMethod()
            {
                Amount = 444, ShippingMethod = "shipMethod"
            },
                new RewardShippingGetOfRelShippingMethod()
            {
                Amount = 444, ShippingMethod = "shipMethod", MaxLimit = 22
            },
                new RewardPaymentGetOfAbs()
            {
                Amount = 444, PaymentMethod = "payMethod"
            },
                new RewardPaymentGetOfRel()
            {
                Amount = 444, PaymentMethod = "payMethod", MaxLimit = 22
            },
                new RewardItemForEveryNumInGetOfRel()
            {
                Amount = 444, ForNthQuantity = 77, InEveryNthQuantity = 78, MaxLimit = 22, ItemLimit = 23, Product = new ProductContainer()
                {
                    ProductId = "prodID", ProductName = "prodName"
                }
            },
                new RewardItemForEveryNumOtherItemInGetOfRel()
            {
                Amount = 444, ForNthQuantity = 77, InEveryNthQuantity = 78, MaxLimit = 22, ItemLimit = 23, Product = new ProductContainer()
                {
                    ProductId = "prodID", ProductName = "prodName"
                }, ConditionalProduct = new ProductContainer()
                {
                    ProductId = "condProdID", ProductName = "condProdName"
                }
            }
                );

            var dynamicPromotion = new DynamicPromotion
            {
                DynamicExpression = AbstractTypeFactory <PromotionConditionAndRewardTree> .TryCreateInstance()
            };

            dynamicPromotion.DynamicExpression.WithChildrens(
                blockCustomer,
                blockCatalog,
                blockCart,
                blockReward
                );

            dynamicPromotion.AssertCloneIndependency();
        }