예제 #1
0
        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"));
        }
예제 #2
0
        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"));
        }