public decimal Calculate(IBasket basket)
        {
            var     scannedItems = new List <string>();
            decimal total        = 0;

            for (var item = basket.Take(); item != null; item = basket.Take())
            {
                total += CalculateItem(item);
                scannedItems.Add(item);
            }

            var discounts = _offersService.GetAllDiscounts(scannedItems, _itemCatalogue);

            return(total + discounts);
        }