示例#1
0
        public decimal Total()
        {
            // Calculate the total of the basket
            var basketCalculator = BasketCalculatorFactory.Create(CartItems, ProductRepository);
            var productTotal     = basketCalculator.Calculate();

            // Apply Shipping
            var shippingCalculator = ShippingCalculatorFactory.Create(productTotal);
            var shippingCost       = shippingCalculator.Calculate();

            // Apply Discount
            var discountCalculator = new DiscountCalculatorFactoryBuilder()
                                     .AddCoupon(CouponId)
                                     .AddShippingCost(shippingCost)
                                     .AddProductRepository(ProductRepository)
                                     .AddCouponRepository(CouponRepository)
                                     .AddCartItems(CartItems)
                                     .GetDiscountCalculatorFactory()
                                     .Create();
            var discount = discountCalculator.Calculate();

            return(productTotal + shippingCost - discount);
        }
 public IShoppingCartEngineBuilder AddBasketCalculatorFactory(BasketCalculatorFactory basketCalculatorFactory)
 {
     shoppingCartEngine.BasketCalculatorFactory = basketCalculatorFactory;
     return(this);
 }