public BankModule(ICashDispenser dispenser, IAccountRepository accountRepo) { _dispenser = dispenser; _accountRepo = accountRepo; Get["/"] = _ => { return @"<html> <body> <form action='/withdraw' method='post'> <label for='accountNo'>Account no</label> <input type='text' name='accountNo' id='accountNo'> <br /> <label for='amount'>Amount</label> <input type='text' name='amount' id='amount'> <br /> <input type='submit' name='withdraw' id='withdraw' value='Withdraw'> </form> </body> </html>"; }; Post["/withdraw"] = p => { var vm = this.Bind<WithdrawalVM>(); var account = _accountRepo.GetAccount(vm.AccountNo); var teller = new Teller(_dispenser); teller.AuthenticateAs(account); teller.Withdraw(vm.Amount); return "It's done!"; }; }
// Does ALL the work of withdrawing cash - automating that procress public static void Whitdraw(int amountToWithdraw) { var teller = new Teller(CashDispenser); teller.AuthenticateAs(MyAccount); teller.Withdraw(amountToWithdraw); }