public HttpResponseMessage Post(BasketItem item) { if (Cart.Items.Any(i => i.ProductId == item.ProductId)) return Request.CreateErrorResponse(HttpStatusCode.Conflict, "Product " + item.ProductId + " already in cart, please update quantity to increase number of items"); var product = ProductsRepository.Products.FirstOrDefault(p => p.Id == item.ProductId); if (product == null) return Request.CreateErrorResponse(HttpStatusCode.Conflict, "No product found with id " + item.ProductId); if (product.ItemsInStock == 0) return Request.CreateErrorResponse(HttpStatusCode.Conflict, "Item is no longer in stock"); Cart.AddItem(item); product.ItemsInStock -= item.Quantity; return Request.CreateResponse(); }
public HttpResponseMessage Put(BasketItem item) { var existing = Cart.Items.SingleOrDefault(i => i.Id == item.Id); if (existing == null) return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No basketitem found with id " + item.Id); if (existing.ProductId != item.ProductId) return Request.CreateErrorResponse(HttpStatusCode.Conflict, "Product in item different than product in request"); var product = ProductsRepository.Products.FirstOrDefault(p => p.Id == item.ProductId); if (product == null) return Request.CreateErrorResponse(HttpStatusCode.Conflict, "No product found with id " + item.ProductId); if (product.ItemsInStock == 0) return Request.CreateErrorResponse(HttpStatusCode.Conflict, "Item is no longer in stock"); var diff = item.Quantity - existing.Quantity; existing.Quantity = item.Quantity; product.ItemsInStock -= diff; return Request.CreateResponse(HttpStatusCode.Accepted, item); }
public void AddItem(BasketItem product) { _items.Add(product); }