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();