Exemplo n.º 1
0
        public async Task <ActionResult> PutAsync(string cartName, [FromBody] AddCartItemDto item)
        {
            _logger.LogDebug($"Put called with parameter: {cartName}");

            if (item == null)
            {
                _logger.LogDebug($"Empty body");
                return(BadRequest(new ResultMessageDto("Empty body")));
            }

            if (item.Quantity <= 0)
            {
                _logger.LogDebug($"Invalid quantity {item.Quantity}");
                return(BadRequest(new ResultMessageDto("Invalid quantity")));
            }

            var model = _cartItemMapper.Map <CartItem>(item);

            return(await HandleExceptionsAsync(cartName, async() =>
            {
                await _cartsRepository.AddItemToCartAsync(cartName,
                                                          (x) => _productsRepository.GetAsync(p => p.Id == x),
                                                          model);

                return Ok(new ResultMessageDto("Product added"));
            }));
        }
Exemplo n.º 2
0
 public CartItem GetCartItem(Cart cart, AddCartItemDto itemDto)
 {
     return(cart.Items.FirstOrDefault(i =>
                                      i.CartId == cart.Id &&
                                      i.Color == itemDto.Color &&
                                      i.Size == itemDto.Size &&
                                      i.ProductId == itemDto.ProductId));
 }
        public async Task <ActionResult <CartDto> > AddItemToCart(AddCartItemDto itemDto)
        {
            var cart = await _unitOfWork.CartRepo.GetCartAsync(User.GetUserId());

            if (cart == null)
            {
                return(NotFound("No cart for this user"));
            }

            var item = _unitOfWork.CartRepo.GetCartItem(cart, itemDto);

            if (item == null)
            {
                var newItem = new CartItem
                {
                    ProductId = itemDto.ProductId,
                    Quantity  = 1,
                    Color     = itemDto.Color,
                    Size      = itemDto.Size
                };

                cart.Items.Add(newItem);
            }
            else
            {
                item.Quantity++;
            }


            _unitOfWork.CartRepo.UpdateCart(cart);

            if (await _unitOfWork.Complete())
            {
                return(_mapper.Map <CartDto>(cart));
            }

            return(BadRequest("Couldn't add the item"));
        }