private static IDictionary <string, Offer> LoadHardCodedOffers() { var offers = new Dictionary <string, Offer>(); var offer = new MultiBuyOffer("A99", 3, 1.3M); offers.Add(offer.Sku, offer); offer = new MultiBuyOffer("B15", 2, 0.45M); offers.Add(offer.Sku, offer); return(offers); }
//TODO refactor into base service or the entity private decimal CalculateMultiBuyOfferPrice(MultiBuyOffer offer, BasketItem basketItem) { var totalQuantity = basketItem.Quantity; var quantityRequired = offer.QuantityRequired; var offersMatched = totalQuantity / quantityRequired; var remainder = totalQuantity % quantityRequired; var offerPrice = offersMatched * offer.Price; var unmatchingQuantity = remainder; var nonOfferPrice = unmatchingQuantity * basketItem.Product.UnitPrice; return(offerPrice + nonOfferPrice); }