public string Generate(IEnumerable <IProductPriceInfo> productInfos, ICartCoupon cartCoupon)
        {
            if (productInfos == null)
            {
                throw new ArgumentNullException(nameof(productInfos));
            }

            var sb = new StringBuilder();

            sb.AppendLine("Tnx!");
            sb.AppendLine();

            sb.AppendLine("Name...Price...Qty...Total Price");

            foreach (var productInfo in productInfos)
            {
                sb.AppendLine($"{productInfo.Product.Name}...{productInfo.Product.Price}p...{productInfo.InCartQty}...{productInfo.GetTotalPrice()}");
                if (productInfo.Coupon != null && productInfo.Coupon.Discount > 0)
                {
                    sb.AppendLine($"Product discount: {productInfo.Coupon.Discount*100}%");
                }
                sb.AppendLine();
            }

            sb.AppendLine();

            if (cartCoupon != null && cartCoupon.Discount > 0)
            {
                sb.AppendLine($"Total: {cartCoupon.GetTotalPrice(productInfos)}");
                sb.AppendLine($"Cart discount: {cartCoupon.Discount * 100}%");
            }
            else
            {
                sb.AppendLine($"Total: {productInfos.Sum(p => p.GetTotalPrice())}");
            }

            return(sb.ToString());
        }
示例#2
0
 public void SetCartCoupon(ICartCoupon cartCoupon)
 {
     CartCoupon = cartCoupon;
 }
示例#3
0
        public void SetCartCoupon(ICartCoupon cartCoupon)
        {
            var setCouponCommand = _couponCommandFactory.CreateSetCartCouponCommand(ProductCart, cartCoupon);

            _commandManager.ExecuteCommand(setCouponCommand);
        }
示例#4
0
 public SetCouponToCartCommand(IProductCart cart, ICartCoupon cartCoupon)
 {
     _cart           = cart;
     _newCoupon      = cartCoupon;
     _previousCoupon = _cart.CartCoupon;
 }
示例#5
0
        private static void PrintReceipt(IEnumerable <IProductPriceInfo> cartProducts, ICartCoupon cartCartCoupon)
        {
            var receiptText = new SimpleReceiptGenerator().Generate(cartProducts, cartCartCoupon);

            new ConsolePrinter().Print(receiptText);
        }
示例#6
0
 public ICommand CreateSetCartCouponCommand(IProductCart cart, ICartCoupon cartCoupon)
 {
     return(new SetCouponToCartCommand(cart, cartCoupon));
 }