public IHttpActionResult RemoveProductInCart(RemoveProductInCartRequest request) { try { if (!ModelState.IsValid) { string errorMsg = string.Empty; errorMsg += string.Join(" ", ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage)); return(BadRequest(errorMsg)); } var product = _productModel.GetProduct(request.ProductId); if (product == null) { return(BadRequest(MessageResource.UnavailableProduct)); } var response = new CartTransactionResponse() { UserCart = _shoppingCartModel.RemoveProductInCart(request), AvailableProducts = _productModel.GetAllProducts().ToList() }; return(Ok(response)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public Cart RemoveProductInCart(RemoveProductInCartRequest request) { var userCart = GetUserCart(request.UserId); var productToRemove = userCart.Products.Products.SingleOrDefault(x => x.Id == request.ProductId); if (productToRemove == null) { throw new Exception(MessageResource.ProductDoesNotExistInCart); } userCart.Products.Products.Remove(productToRemove); //Remove product in the usercart. userCart.UpdateCartComputations(); UpdateUserCart(userCart); IncreaseProductQuantity(request.ProductId, productToRemove.Count); //Increase the products available quantity in the inventory. return(GetUserCart(request.UserId)); }