void UpdateBankedCoins() { foreach (var coin in InsertedCoins) { BankedCoins.Add(coin); } InsertedCoins = new List <Coin>(); }
/// <summary> /// To buy a product, there needs to be 1 Nickel (0.05) and 1 Dime (0.10) OR 3 Nickels /// Most that can be expected is $1.00 for Cola, made of 4 Quarters. Customers buying other Products should enter 3 Quarters maximum. /// </summary> void HasChangeAvailable() { var nickels = BankedCoins.Where(coin => coin.CoinType == CoinType.Nickel).Count(); var dimes = BankedCoins.Where(coin => coin.CoinType == CoinType.Dime).Count(); if (!((dimes > 0 && nickels > 0) || nickels > 2)) { NoChange = true; } }
public void CalculateChangeInCoins(decimal change) { var coinsToReturn = new Dictionary <CoinType, int>(); var availableCoins = BankedCoins.GroupBy(coin => coin.CoinType); var availableDimes = availableCoins.Where(coins => coins.Key == CoinType.Dime).FirstOrDefault() != null?availableCoins.Where(coins => coins.Key == CoinType.Dime).FirstOrDefault().Count() : 0; var availableNickels = availableCoins.Where(coins => coins.Key == CoinType.Nickel).FirstOrDefault() != null?availableCoins.Where(coins => coins.Key == CoinType.Nickel).FirstOrDefault().Count() : 0; var dimes = Math.Min(Math.Floor(change / 0.10m), availableDimes); change -= 0.10m * dimes; coinsToReturn.Add(CoinType.Dime, (int)dimes); var nickels = Math.Min(Math.Floor(change / 0.05m), availableNickels); coinsToReturn.Add(CoinType.Nickel, (int)nickels); CoinsToDispense = coinsToReturn; }