public IActionResult EditProduct([FromBody] ProductToCartRequest request) { var userContext = _dbContext.Set <User>() .Include(x => x.Cart) .Include(x => x.Cart.ProductCarts); var userEmail = User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Name)?.Value; if (userEmail == null) { return(BadRequest("Your session has ended please try to login again")); } var user = userContext.FirstOrDefault(x => x.Email == userEmail); if (user == null) { return(BadRequest("Your session has ended")); } var productCart = user.Cart.ProductCarts.FirstOrDefault(x => x.ProductId == Guid.Parse(request.Id)); if (productCart == null) { return(BadRequest("No such product in cart")); } if (request.Amount < 1) { _dbContext.Remove(productCart); } else { productCart.Amount = request.Amount; } var result = _dbContext.SaveChanges(); return(result > 0 ? GetCart() : BadRequest("Nothing changed")); }
public IActionResult AddProductToCart([FromBody] ProductToCartRequest request) { var userContext = _dbContext.Set <User>() .Include(x => x.Cart) .Include(x => x.Cart.ProductCarts); var userEmail = User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Name)?.Value; if (userEmail == null) { return(BadRequest("Your session has ended please try to login again")); } var user = userContext.FirstOrDefault(x => x.Email == userEmail); if (user == null) { return(BadRequest("Your session has ended")); } if (user.Cart == null) { user.Cart = new Cart { ProductCarts = new List <ProductCart>() }; user.Cart.ProductCarts.Add(new ProductCart() { Amount = request.Amount, ProductId = Guid.Parse(request.Id), Cart = user.Cart }); } else { if (user.Cart.ProductCarts.Any()) { var productCart = user.Cart.ProductCarts.FirstOrDefault(x => x.ProductId == Guid.Parse(request.Id)); if (productCart == null) { user.Cart.ProductCarts.Add(new ProductCart() { Amount = request.Amount, ProductId = Guid.Parse(request.Id), Cart = user.Cart }); } else { productCart.Amount += request.Amount; } } else { user.Cart.ProductCarts.Add(new ProductCart() { Amount = request.Amount, ProductId = Guid.Parse(request.Id), Cart = user.Cart }); } } var result = _dbContext.SaveChanges(); if (result > 0) { return(GetProductAmountInCart()); } return(BadRequest("Nothing changed")); }