public bool Dispense(string itemToDispense, VmCoinValidator validator, VmCoinBank coinBank, VmFoodSlot foodSlot, VmDisplay display) { int currentTransactionTotal = validator.GetCurrentTransactionTotal(); if (itemToDispense == SODA_STRING && _soda.Count == 0 || itemToDispense == CHIPS_STRING && _chips.Count == 0 || itemToDispense == CANDY_STRING && _candy.Count == 0) { display.SoldOutMessage(); return(false); } if (itemToDispense == SODA_STRING && currentTransactionTotal < SODA_COST) { display.PriceMessage(SODA_COST); return(false); } if (itemToDispense == CHIPS_STRING && currentTransactionTotal < CHIPS_COST) { display.PriceMessage(CHIPS_COST); return(false); } if (itemToDispense == CANDY_STRING && currentTransactionTotal < CANDY_COST) { display.PriceMessage(CANDY_COST); return(false); } switch (itemToDispense) { case SODA_STRING: DispenseSoda(currentTransactionTotal, coinBank, foodSlot, itemToDispense, display); display.ThankYouMessage(); validator.CompleteTransaction(); return(true); case CHIPS_STRING: DispenseChips(currentTransactionTotal, coinBank, foodSlot, itemToDispense, display); display.ThankYouMessage(); validator.CompleteTransaction(); return(true); case CANDY_STRING: DispenseCandy(currentTransactionTotal, coinBank, foodSlot, itemToDispense, display); display.ThankYouMessage(); validator.CompleteTransaction(); return(true); default: return(false); } }
private void DispenseSoda(int currentTransactionTotal, VmCoinBank coinBank, VmFoodSlot foodSlot, string itemToDispense, VmDisplay display) { if (_soda.Count == 0) { display.SoldOutMessage(); } else if (currentTransactionTotal < SODA_COST) { display.PriceMessage(SODA_COST); } else { _soda.Remove(SODA_STRING); coinBank.MakeChange(currentTransactionTotal - SODA_COST); foodSlot.AcceptFood("Soda"); } }
private void DispenseCandy(int currentTransactionTotal, VmCoinBank coinBank, VmFoodSlot foodSlot, string itemToDispense, VmDisplay display) { if (_candy.Count == 0) { display.SoldOutMessage(); } else if (currentTransactionTotal < CANDY_COST) { display.PriceMessage(SODA_COST); } else { _candy.Remove(CANDY_STRING); coinBank.MakeChange(currentTransactionTotal - CANDY_COST); foodSlot.AcceptFood("Candy"); } }