public HttpResponseMessage BuyDrink(WendingDrinks drink) { return Invoke(() => { var change = WendingMachine.Instance.BuyDrink(drink); return change.ToArray(); }); }
/// <summary> /// Купить напиток /// </summary> public Wallet BuyDrink(WendingDrinks drinkType) { if (Store[drinkType] < 1) throw new Exception("К сожалению данный напиток закончился. Приносим извинения!"); var price = (int)drinkType; if (_EscrowSum < price) throw new Exception("Недостаточно средств"); var allCoins = new Wallet(); allCoins.Flush(Wallet, false); allCoins.Flush(Escrow, false); var change = CountChange(allCoins, price); Store[drinkType] -= 1; // Обнуляем кошелек Escrow.Flush(Wallet); //Высыпаем в кошелек все оставшиеся после сдачи монеты Wallet.Flush(allCoins); //Обнуляем escrow с помощью временного allCoins кошелька allCoins.Flush(Escrow); _EscrowSum = 0; //Возвращаем сдачу return change; }