public IEnumerable <ProductInBasket> ApplyOffer(IEnumerable <ProductInBasket> productsInBasket) { var totalNumberOfProducts = productsInBasket.Where(product => product.Product.Name == _productName).Select(product => product.Quantity).Sum(); var fourthMilkHasDiscount = totalNumberOfProducts / _nthItemFree; return(OfferApplier.ApplyDiscountToProduct(productsInBasket, _productName, _discounter(fourthMilkHasDiscount))); }
public IEnumerable <ProductInBasket> ApplyOffer(IEnumerable <ProductInBasket> productsInBasket) { int totalNumberOfFirstProduct = productsInBasket.Where(product => product.Product.Name == _firstProduct).Select(product => product.Quantity).Sum(); int totalNumberOfSecondProduct = productsInBasket.Where(product => product.Product.Name == _secondProduct).Select(product => product.Quantity).Sum(); int numberOfDiscountsPossible = totalNumberOfFirstProduct / 2; int totalNumberOfDiscountsThatCanBeApplied = Math.Min(numberOfDiscountsPossible, totalNumberOfSecondProduct); return(OfferApplier.ApplyDiscountToProduct(productsInBasket, _secondProduct, _discounter(totalNumberOfDiscountsThatCanBeApplied))); }