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