public void AddCoinToAvailableCoinTube(CoinSpecification coinType)
        {
            for (var i = 0; i < CoinTubes.Count(); i++)
            {
                var coinTube = CoinTubes[i];

                if (coinTube.Spec == coinType && coinTube.CountInTube < coinTube.Capacity)
                {
                    // Direct inserted coin to the available coin tube
                    coinTube.CountInTube++;
                    return;
                }
            }

            // Direct inserted coin to cash box
        }
 public int GetCoinInventory(CoinSpecification coinType)
 {
     return(CoinTubes.Where(i => i.Spec == coinType)
            .Sum(i => i.CountInTube));
 }
 public CoinDispensedEventArgs(CoinSpecification coinSpec)
 {
     this.CoinSpec = coinSpec;
 }