protected override OperationResult Handle(AddCoinCommand command) { var result = new OperationResult(); try { ICoinFactory coinFactory = CoinFactoryProducer.GetFactory(command.Currency); ICoin coin = coinFactory.GetCoin(command.Amount); OperationResult jarValidatorResult = _coinJarValidatorRulesEngine.Validate(coin); if (jarValidatorResult.HasErrors) { result.AddErrorMessages(jarValidatorResult.GetErrorMessages()); return(result); } _db.AddCoin(coin); return(result); } catch (ApplicationException e) { result.AddErrorMessage(e.Key, e.Message); } return(result); }
public VendingMachine(ICoinSlot coinSlot, ICoinReturn coinReturn, ICoinFactory coinFactory, IVendingMachineDisplay vendingMachineDisplay) { _coinSlot = coinSlot; _coinReturn = coinReturn; _coinFactory = coinFactory; _vendingMachineDisplay = vendingMachineDisplay; }
public void TestCorrectlyBuildsCoinFactory() { MainFormController mainFormController = new MainFormController(new Form()); ICoinFactory coinFactory = mainFormController.CoinFactory; Assert.IsInstanceOf(typeof(ICoinFactory), coinFactory); }
public CoinAccepter(ICoinFactory coinFactory, ICoinPurse coinPurse, ICoinReturn coinReturn) { CoinFactory = coinFactory; CoinPurse = coinPurse; CoinReturn = coinReturn; }
static void Main(string[] args) { ICoinFactory factory = null; CoinJar coinJar = new CoinJar(); string coinType = string.Empty; do { Console.WriteLine("Valid Coin Types: [cent/penny, nickel, dime, quarter, halfdollar, dollar]"); Console.WriteLine("Enter Coin Type (q to quit):"); coinType = Console.ReadLine(); Console.Clear(); switch (coinType.ToLower()) { case "cent": case "penny": factory = new PennyFactory(); break; case "nickel": factory = new NickelFactory(); break; case "dime": factory = new DimeFactory(); break; case "quarter": factory = new QuarterFactory(); break; case "halfdollar": factory = new HalfDollarFactory(); break; case "dollar": factory = new DollarFactory(); break; default: Console.WriteLine("Invalid Coin Type"); factory = null; break; } if (factory != null) { try { coinJar.AddCoin(factory.GetCoin()); Console.WriteLine("Coin added!"); } catch (JarFullException ex) { Console.WriteLine($"** {ex.Message} **"); } catch (Exception ex) { Console.WriteLine($"ERROR: {ex.Message}"); } } Console.WriteLine($"Total Amount: {coinJar.TotalAmount}"); } while (coinType.ToLower() != "q"); }
public CoinAccepter(ICoinFactory coinFactory, ICoinPurse coinPurse, ICoinReturn coinReturn) { CoinFactory = coinFactory; CoinPurse = coinPurse; CoinReturn = coinReturn; }
public ConsoleLoop(IParseConsoleInput parseConsoleInput, ICoinFactory coinFactory, IVendingMachine vendingMachine) { _parseConsoleInput = parseConsoleInput; _coinFactory = coinFactory; _vendingMachine = vendingMachine; }