public async Task SetQuantities()

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