private void DispenseChange(ChangeDue changeTray, int unitsToDispense) { var valueDispensed = Coin.Value * unitsToDispense; if (Coin.GetType() == typeof(Dollar)) { changeTray.Dollars += unitsToDispense; } if (Coin.GetType() == typeof(Quarter)) { changeTray.Quarters += unitsToDispense; } if (Coin.GetType() == typeof(Dime)) { changeTray.Dimes += unitsToDispense; } if (Coin.GetType() == typeof(Nickle)) { changeTray.Nickles += unitsToDispense; } if (Coin.GetType() == typeof(Penny)) { changeTray.Pennies += unitsToDispense; } changeTray.AmountDue = changeTray.AmountDue - valueDispensed; this.Units -= unitsToDispense; }
private static void PrintChange(ChangeDue changeTray) { using (StreamWriter file = new StreamWriter(@"transaction-output.csv", true)) { var output = $"{changeTray.Dollars} dollar, {changeTray.Quarters} quarters, {changeTray.Dimes} dimes, {changeTray.Nickles} nickles, {changeTray.Pennies} pennies"; Console.WriteLine(output); file.WriteLine(output); } }
public void DispenseChange(ChangeDue changeTray) { var unitsToDispense = Convert.ToInt32(Math.Floor(changeTray.AmountDue / Coin.Value)); if (unitsToDispense > this.Units) { unitsToDispense = this.Units; } if (Coin.Value <= changeTray.AmountDue) { DispenseChange(changeTray, unitsToDispense); } }
public virtual ChangeDue DispenseChange(decimal transactionTotal, decimal amountTendered) { var changeTray = new ChangeDue(); changeTray.AmountDue = amountTendered - transactionTotal; do { foreach (ICoinChamber c in dispenser) { c.DispenseChange(changeTray); } }while (changeTray.AmountDue > 0); return(changeTray); }
public override ChangeDue DispenseChange(decimal transactionTotal, decimal amountTendered) { var changeTray = new ChangeDue(); changeTray.AmountDue = amountTendered - transactionTotal; Random rnd = new Random(); ICoinChamber[] randomChambers = dispenser.OrderBy(x => rnd.Next()).ToArray(); do { foreach (ICoinChamber c in randomChambers) { c.DispenseChangeRandom(changeTray); } }while (changeTray.AmountDue > 0); return(changeTray); }
public ChangeDue DispenseChange(decimal amountOwed, decimal amountTendered) { var changeTray = new ChangeDue(); if (amountTendered < amountOwed) { throw new Exception("Amount Tendered must be greater than Transaction Total"); } changeTray.AmountDue = amountTendered - amountOwed; if (dispenser.GetTotalValue() < changeTray.AmountDue && MinimumChangeAvailable()) { throw new Exception("Amount Due is greater than amount dispensable, please fill the dispenser"); } if (amountOwed % appSettings.Divisor == 0) { return(randomDispenser.DispenseChange(amountOwed, amountTendered)); } return(dispenser.DispenseChange(amountOwed, amountTendered)); }