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); }