public void ProcessRequest(HttpContext context) { var basketStore = new BasketStore(); using (var stream = context.Request.InputStream) { using (var streamReader = new StreamReader(stream)) { var items = streamReader.ReadToEnd(); var basketItems = new BasketItems(items); var price = new PriceCalculator().GetPriceOf(basketItems); var basket = new Basket { Price = price }; var basketId = basketStore.Add(basket); context.Response.StatusCode = (int)HttpStatusCode.Created; context.Response.RedirectLocation = "http://checkout-kata-api.local/baskets/" + basketId; } } }
public int PriceOfItems(BasketItems basketItems) { return(basketItems.ItemCount(_itemCode) * _pricePerItem); }
public int GetPriceOf(BasketItems basketItems) { return(_fullPrices.Sum(price => price.PriceOfItems(basketItems)) - _discountPrices.Sum(price => price.DiscountOnItems(basketItems))); }
public int DiscountOnItems(BasketItems basketItems) { return((basketItems.ItemCount(_itemCode) / _groupSize) * _discountPerGroup); }