Example #1
0
        public async Task <IActionResult> Create([FromBody] CreateCartItemRequest cartItemRequest)
        {
            var checkCartExist = await _cartService.GetCartByUserIdAsync(cartItemRequest.UserId);

            if (checkCartExist == null)
            {
                var CartId = await CreateCart(cartItemRequest.UserId);

                if (CartId > 0)
                {
                    var CartItemId = await CreateCartItem(CartId, cartItemRequest);

                    if (CartItemId > 0)
                    {
                        return(Ok(new
                        {
                            cartId = CartId,
                            cartItemId = CartItemId,
                            status = Ok().StatusCode,
                            message = "Successfully Add"
                        }));
                    }
                }
            }
            else
            {
                var checkCartItemExist = await _cartItemService.GetCarItemtByValueAsync(checkCartExist.Id,
                                                                                        cartItemRequest.ProductId);

                if (checkCartItemExist == null)
                {
                    var CartItemId = await CreateCartItem(checkCartExist.Id, cartItemRequest);

                    if (CartItemId > 0)
                    {
                        return(Ok(new
                        {
                            cartId = checkCartExist.Id,
                            cartItemId = CartItemId,
                            status = Ok().StatusCode,
                            message = "Successfully Add"
                        }));
                    }
                }
                else
                {
                    var _cartItem = new CartItem()
                    {
                        Id        = checkCartItemExist.Id,
                        CartId    = checkCartItemExist.CartId,
                        ProductId = checkCartItemExist.ProductId,
                        Quantity  = checkCartItemExist.Quantity
                    };

                    var quantity = _cartItem.Quantity + cartItemRequest.Quantity;

                    var updateCartItem = await UpdateCartItem(_cartItem.Id, quantity);

                    if (updateCartItem == 1)
                    {
                        return(Ok(new
                        {
                            cartId = checkCartExist.Id,
                            cartItemId = checkCartItemExist.Id,
                            status = Ok().StatusCode,
                            message = "Successfully Add"
                        }));
                    }
                }
            }
            return(NotFound(new ErrorResponse
            {
                message = "Not Found",
                status = NotFound().StatusCode
            }));
        }