コード例 #1
0
        public async Task <IActionResult> UpdateProductCart(Guid productId, CustomerCartProduct customerCartProduct)
        {
            var customerCart = await GetCustomerCart();

            var productCart = await GetCartProductValidated(productId, customerCart, customerCartProduct);

            if (productCart == null)
            {
                return(GenerateResponse());
            }

            customerCart.UpdateQuantity(productCart, customerCartProduct.Quantity);

            _context.CustomerCarts.Update(customerCart);
            _context.CustomerCartProducts.Update(productCart);

            var commitResult = await _context.SaveChangesAsync();

            if (commitResult <= 0)
            {
                AddErrorToList("The data was not persisted on database.");
            }

            return(GenerateResponse());
        }
コード例 #2
0
        private async Task <CustomerCartProduct> GetCartProductValidated(Guid productId,
                                                                         CustomerCart customerCart,
                                                                         CustomerCartProduct customerCartProduct = null)
        {
            if (customerCartProduct != null && productId != customerCartProduct.Id)
            {
                AddErrorToList("Product id doesn't match.");
                return(null);
            }

            if (customerCart == null)
            {
                AddErrorToList("Customer cart not found.");
                return(null);
            }

            var itemCart = await _context.CustomerCartProducts
                           .FirstOrDefaultAsync(p => p.CustomerCartId == customerCart.Id && p.ProductId == productId);

            if (itemCart == null)
            {
                AddErrorToList("Product isn't in the cart.");
                return(null);
            }

            return(itemCart);
        }
コード例 #3
0
        private void HandleNewCart(Guid customerId, CustomerCartProduct cartProduct)
        {
            var cart = new CustomerCart(customerId);

            cart.AddProduct(cartProduct);

            _context.CustomerCarts.Add(cart);
        }
コード例 #4
0
        private void HandleExistentCart(CustomerCart cart, CustomerCartProduct cartProduct)
        {
            var productInCart = cart.ProductInCart(cartProduct.Id);

            cart.AddProduct(cartProduct);
            if (productInCart)
            {
                _context.CustomerCartProducts.Update(cart.GetProductById(cartProduct.Id));
            }
            else
            {
                _context.CustomerCartProducts.Add(cart.GetProductById(cartProduct.Id));
            }

            _context.CustomerCarts.Update(cart);
        }
コード例 #5
0
        public async Task <IActionResult> PostCartItem(CustomerCartProduct cartProduct)
        {
            var customerCart = await GetCustomerCart();

            if (customerCart == null)
            {
                HandleNewCart(_user.GetUserId(), cartProduct);
            }
            else
            {
                HandleExistentCart(customerCart, cartProduct);
            }

            var commitResult = await _context.SaveChangesAsync();

            if (commitResult <= 0)
            {
                AddErrorToList("The data was not persisted on database.");
            }

            return(GenerateResponse());
        }