public void ValidCoin(ICoin coin) { DepositedCoins.Deposit(coin); TotalDeposit += coin.Cost; StartState(); }
public void MakeChange(decimal productCost) { var coins = new List <ICoin>(); var cost = productCost; var deposited = DepositedCoins.TotalValue(); var amountOwedToCustomer = deposited - cost; var refundRemaining = amountOwedToCustomer; if ((amountOwedToCustomer % new decimal(0.25)) < amountOwedToCustomer) { var numOfCoins = (int)(amountOwedToCustomer / new decimal(0.25)); for (var i = 0; i < numOfCoins; i++) { coins.Add(Coin.Quarter); } refundRemaining = refundRemaining % new decimal(0.25); amountOwedToCustomer = refundRemaining; } if ((amountOwedToCustomer % new decimal(0.10)) < amountOwedToCustomer) { var numOfCoins = (int)(amountOwedToCustomer / new decimal(0.10)); for (var i = 0; i <= numOfCoins; i++) { coins.Add(Coin.Dime); } refundRemaining = refundRemaining % new decimal(0.10); amountOwedToCustomer = refundRemaining; } if ((amountOwedToCustomer % new decimal(0.05)) < amountOwedToCustomer) { var numOfCoins = (int)(amountOwedToCustomer / new decimal(0.05)); for (var i = 0; i <= numOfCoins; i++) { coins.Add(Coin.Nickel); } refundRemaining = refundRemaining % new decimal(0.05); amountOwedToCustomer = refundRemaining; } foreach (var coin in coins) { CoinInventory.Remove(coin); CoinReturn.Deposit(coin.ToMetal()); } }
public void Insert(ICoin coin) { DepositedCoins.Deposit(coin); }
public void EjectCoins() { DepositedCoins.Clear(); }