public Dictionary<CoinValue, int> Calculate(VendingMachineEntity machine)
        {
            //результат вычислений - сколько нужно отдать монет.
            //ключ - достоинство монеты, значение - количество
            var resultCoins = new Dictionary<CoinValue, int>();
            int deposited = machine.DepositedAmount; //сколько должны дать сдачи
            int residual = deposited; //Сколько средств еще нужно отдать

            //сначала отдаем самые крупные монеты
            var ordered = machine.VendingMachineCoinLinks
                .OrderByDescending(x => x.Coin.CoinValue)
                .ToList();

            foreach (var coin in ordered)
            {
                if (coin.Count < 1)
                    continue;

                var coinsCount = Convert.ToInt32(Math.Floor((decimal)(residual / (int)coin.Coin.CoinValue)));

                if (coinsCount == 0)
                    continue;

                if (coin.Count < coinsCount)
                    coinsCount = coin.Count;

                residual -= coinsCount * (int)coin.Coin.CoinValue;
                resultCoins.Add(coin.Coin.CoinValue, coinsCount);

                if (residual == 0)
                    break;
            }

            return resultCoins;
        }
        internal static VendingMachineEntity Generate(IEnumerable<Coin> coins, IList<Product> products)
        {
            var result = new VendingMachineEntity
            {
                Name = "Кофейный автомат",
                VendingMachineCoinLinks = new List<VendingMachineCoinLink>()
            };

            foreach (var coin in coins)
            {
                result.VendingMachineCoinLinks.Add(new VendingMachineCoinLink()
                    {
                        Coin = coin,
                        Count = _defaultCount
                    });
            }

            result.VendingMachineProductLinks = new List<VendingMachineProductLink>()
            {
                new VendingMachineProductLink{Product = products[0], Count=10},
                new VendingMachineProductLink{Product = products[1], Count=20},
                new VendingMachineProductLink{Product = products[2], Count=20},
                new VendingMachineProductLink{Product = products[3], Count=15}
            };

            return result;
        }