private void ApplyProductsDiscount(IProductDiscount productDiscount) { foreach (var product in _products) { var discount = product.Discount; product.ApplyDiscount(productDiscount); _productsDiscount += product.Discount - discount; } }
public POSTerminalService() { _calculatorService = new CalculatorService(); _createProductDetailsService = new CreateProductDetailsService(); _productDiscountService = new ProductDiscountService(); _scanService = new ScanService(); _receiptService = new ReceiptService(); _paymentService = new PaymentService(_paymentProcessor); }
public void AddProductDiscount(IProductDiscount productDiscount) { if (productDiscount is null) { throw new ArgumentNullException(nameof(productDiscount)); } this.productDiscounts.Add(productDiscount); }
/// <summary> /// Gets the adjusted price. /// </summary> /// <param name="discount">The discount.</param> /// <param name="priceBeforeDiscount">The price before discount.</param> /// <returns></returns> public static int GetAdjustedPrice(this IProductDiscount discount, int priceBeforeDiscount, int orderTotalItemCount = 0) { if (discount == null || discount.Type == DiscountType.FreeShipping) { return(priceBeforeDiscount); } var discountValue = discount.DiscountValue; // discount.RangedDiscountValue(orderTotalItemCount); if (discount.Type == DiscountType.Percentage) { return(priceBeforeDiscount - DiscountHelper.PercentageCalculation(priceBeforeDiscount, discountValue)); } if (discount.Type == DiscountType.Amount) { return(priceBeforeDiscount - discountValue); } if (discount.Type == DiscountType.NewPrice) { return(discountValue); } return(priceBeforeDiscount); }
//конструктор нового продукта public Product(string name, ICurrency price, IProductDiscount pd) { m_name = name; m_price = price; p_discount = pd; }