// Chooses specific command to execute depending on the input given. public string Dispatch(string input) { string[] inputArgs = input.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries).ToArray(); string commandName = input.Length != 0 ? inputArgs[0].ToLower() : string.Empty; inputArgs = inputArgs.Skip(1).ToArray(); string output = string.Empty; switch (commandName) { case "register": RegisterCommand register = new RegisterCommand() { UserValidator = new UserValidator() }; output = register.Execute(inputArgs); break; case "login": LoginCommand login = new LoginCommand(); output = login.Execute(inputArgs); break; case "logout": LogoutCommand logout = new LogoutCommand(); output = logout.Execute(inputArgs); break; case "exit": ExitCommand exit = new ExitCommand(); output = exit.Execute(inputArgs); break; case "add": AddAccountCommand add = new AddAccountCommand() { CheckingAccountValidator = new CheckingAccountValidator(), SavingAccountValidator = new SavingAccountValidator() }; output = add.Execute(inputArgs); break; case "deposit": DepositCommand deposit = new DepositCommand(); output = deposit.Execute(inputArgs); break; case "withdraw": WithdrawCommand withdraw = new WithdrawCommand(); output = withdraw.Execute(inputArgs); break; // List Accounts case "listaccounts": ListAccountsCommand list = new ListAccountsCommand(); output = list.Execute(inputArgs); break; // Deduct Fee case "deductfee": DeductFeeCommand deduct = new DeductFeeCommand(); output = deduct.Execute(inputArgs); break; // Add Interest case "addinterest": AddInterestCommand addInterest = new AddInterestCommand(); output = addInterest.Execute(inputArgs); break; default: throw new ArgumentException($"Command \"{commandName}\" not supported!"); } return(output); }
public string DispatchCommand(string[] commandParameters) { string commandName = commandParameters[0]; commandParameters = commandParameters.Skip(1).ToArray(); string result = string.Empty; SavingService savingService = new SavingService(); CheckingService checkingService = new CheckingService(); UserService userService = new UserService(); switch (commandName) { case "Exit": ExitCommand exit = new ExitCommand(); result = exit.Execute(); break; case "Deposit": DepositCommand deposit = new DepositCommand(savingService); result = deposit.Execute(commandParameters); break; case "Withdraw": WithdrawCommand withdeow = new WithdrawCommand(savingService); result = withdeow.Execute(commandParameters); break; case "AddInterest": AddInterestCommand addInterest = new AddInterestCommand(savingService); result = addInterest.Execute(commandParameters); break; case "DeductFee": DeductCommand deduct = new DeductCommand(checkingService); result = deduct.Execute(commandParameters); break; case "Register": RegisterCommand register = new RegisterCommand(userService); result = register.Execute(commandParameters); break; case "Login": LoginCommand login = new LoginCommand(); result = login.Execute(commandParameters); break; case "Logout": Logout logout = new Logout(); result = logout.Execute(); break; case "AddSavingAccount": AddSavingAccountCommand addAccount = new AddSavingAccountCommand(savingService); result = addAccount.Execute(commandParameters); break; case "ListAccounts": ListAccounts listAccounts = new ListAccounts(savingService, checkingService); result = listAccounts.Execute(); break; } return(result); }