in src/ApplicationCore/Services/BasketService.cs [69:97]
public async Task SetQuantities(int basketId, Dictionary<string, int> quantities)
{
Guard.Against.Null(quantities, nameof(quantities));
var basket = await _basketRepository.GetByIdAsync(basketId);
Guard.Against.NullBasket(basketId, basket);
var itemsToDelete = new List<BasketItem>();
foreach (var item in basket.Items)
{
if (quantities.TryGetValue(item.Id.ToString(), out var quantity))
{
if (quantity == 0)
{
_logger.LogInformation($"Deleting item ID: {item.Id} from basket ID: {basketId}.");
itemsToDelete.Add(item);
continue;
}
_logger.LogInformation($"Updating quantity of item ID: {item.Id} to {quantity}.");
item.Quantity = quantity;
}
}
foreach (var item in itemsToDelete)
{
basket.RemoveItem(item);
}
await _basketRepository.UpdateAsync(basket);
}