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;
                }
            }
        }
Exemplo n.º 2
0
 public int PriceOfItems(BasketItems basketItems)
 {
     return(basketItems.ItemCount(_itemCode) * _pricePerItem);
 }
Exemplo n.º 3
0
 public int GetPriceOf(BasketItems basketItems)
 {
     return(_fullPrices.Sum(price => price.PriceOfItems(basketItems))
            - _discountPrices.Sum(price => price.DiscountOnItems(basketItems)));
 }
Exemplo n.º 4
0
 public int DiscountOnItems(BasketItems basketItems)
 {
     return((basketItems.ItemCount(_itemCode) / _groupSize) * _discountPerGroup);
 }