Ejemplo n.º 1
0
        public IActionResult UpdateItemInCart(Guid cartId, Guid itemId, UpdateItemInCart updateItemInCart)
        {
            // do some validations
            if (cartId == default ||
                itemId == default ||
                updateItemInCart.Quantity <= 0)
            {
                return(BadRequest());
            }

            var cart = _cartRepository.Get(cartId);

            if (cart is null)
            {
                return(NotFound());
            }

            var item = _itemRepository.Get(itemId);

            if (item is null)
            {
                return(NotFound());
            }

            var cartItem = cart.Items?.FirstOrDefault(i => i.ItemId == itemId);

            if (cartItem is null)
            {
                return(NotFound());
            }

            // every place we want to add an item, we have the same repeated logic...
            _logger.LogInformation("Checking if can add item to cart");
            if ((item.MaximumQuantity ?? int.MaxValue) < updateItemInCart.Quantity)
            {
                return(BadRequest());
            }

            cartItem.Quantity = updateItemInCart.Quantity;

            _cartRepository.Save(cart);

            _logger.LogInformation("Checking if need to notify someone");
            if (item.IsInWatchlist)
            {
                _notifier.Notify(item.Id);
            }

            return(NoContent());
        }
 public IActionResult UpdateItemInCart(Guid cartId, Guid itemId, UpdateItemInCart updateItemInCart)
 {
     _logger.LogInformation("Starting {actionName}", nameof(UpdateItemInCart));
     try
     {
         _cartsService.UpdateItemInCart(cartId, itemId, updateItemInCart.Quantity);
         return(NoContent());
     }
     catch (ValidationException vex)
     {
         return(BadRequest(vex.Message));
     }
     catch (NotFoundException nex)
     {
         return(NotFound(nex.Message));
     }
     finally
     {
         _logger.LogInformation("Ending {actionName}", nameof(UpdateItemInCart));
     }
 }
 public IActionResult UpdateItemInCart([FromRoute] CartId cartId, [FromRoute] ItemId itemId, UpdateItemInCart updateItemInCart)
 => throw new NotImplementedException();
 public IActionResult UpdateItemInCart(
     Guid cartId,
     Guid itemId,
     UpdateItemInCart updateItemInCart)
 => throw new NotImplementedException();