Пример #1
0
        public void ValidCoin(ICoin coin)
        {
            DepositedCoins.Deposit(coin);
            TotalDeposit += coin.Cost;

            StartState();
        }
Пример #2
0
        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());
            }
        }
Пример #3
0
 public void Insert(ICoin coin)
 {
     DepositedCoins.Deposit(coin);
 }
Пример #4
0
 public void EjectCoins()
 {
     DepositedCoins.Clear();
 }