in src/Modules/SimplCommerce.Module.ShoppingCart/Areas/ShoppingCart/Controllers/CartController.cs [95:128]
public async Task<IActionResult> UpdateQuantity([FromBody] CartQuantityUpdate model)
{
var currentUser = await _workContext.GetCurrentUser();
var cart = await _cartService.GetActiveCart(currentUser.Id);
if (cart == null)
{
return NotFound();
}
if (cart.LockedOnCheckout)
{
return CreateCartLockedResult();
}
var cartItem = _cartItemRepository.Query().Include(x => x.Product).FirstOrDefault(x => x.Id == model.CartItemId && x.Cart.CreatedById == currentUser.Id);
if (cartItem == null)
{
return NotFound();
}
if(model.Quantity > cartItem.Quantity) // always allow user to descrease the quality
{
if (cartItem.Product.StockTrackingIsEnabled && cartItem.Product.StockQuantity < model.Quantity)
{
return Ok(new { Error = true, Message = _localizer["There are only {0} items available for {1}.", cartItem.Product.StockQuantity, cartItem.Product.Name].Value });
}
}
cartItem.Quantity = model.Quantity;
_cartItemRepository.SaveChanges();
return await List();
}