예제 #1
0
        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);
        }
예제 #2
0
        //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);
        }