示例#1
0
        static void Main(string[] args)
        {
            var services = new ServiceCollection();

            ConfigureServices(services);

            using (ServiceProvider serviceProvider = services.BuildServiceProvider())
            {
                IBankSimulatorService _bankSimulator = serviceProvider.GetService <IBankSimulatorService>();
                ILogServices          _log           = serviceProvider.GetService <ILogServices>();
                Bank _newBank = _bankSimulator.CreateBank("Brix Test").Result;

                _log.WriteLine("WELCOME TO " + _newBank.Name + " Bank", ConsoleColor.Blue);
                _log.WriteLine("========================== ", ConsoleColor.Blue);

                string MenuInput = string.Empty;
                while (MenuInput != "E" && MenuInput != "e")
                {
                    _log.WriteLine("Menu :O = open an account | R = add owner | D = Deposit | W = Withdrawal | E = Exit", ConsoleColor.Blue);
                    MenuInput = HandleuserInput(_bankSimulator, _log, _newBank).Result;
                }

                Task.WaitAll(tasks.ToArray());
            }
        }
示例#2
0
        private static async Task <string> HandleuserInput(IBankSimulatorService bankSimulator, ILogServices log, Bank bank)
        {
            string MenuInput   = Console.ReadLine();
            string CommanInput = string.Empty;

            try
            {
                switch (MenuInput)
                {
                case "O":     //open account
                case "o":
                    Account _newAccount = await bankSimulator.CreateAccount(bank.ID);

                    log.WriteLine("Account number " + _newAccount.ID.ToString() + " created.", ConsoleColor.Green);
                    break;

                case "R":     // add owner to an account
                case "r":
                    log.WriteLine("Please enter owner id (up to 9 digits), name, account id (123456789,lior gal,1). ", ConsoleColor.White);
                    CommanInput = Console.ReadLine();
                    AccountOwner _newAccountOwner = await bankSimulator.AddAccountOwner(CommanInput.Split( "," )[0].Trim(), CommanInput.Split( "," )[1].Trim(),
                                                                                        Convert.ToInt32(CommanInput.Split(",")[2].Trim()));

                    log.WriteLine(string.Format("User id {0} was added as account {1} owner.", _newAccountOwner.OwnerID, _newAccountOwner.AcoountID.ToString()), ConsoleColor.Green);
                    break;

                case "D":     // Deposit
                case "d":
                    log.WriteLine("Please enter account id, owner id,amount (1,123456789,100.5). ", ConsoleColor.White);
                    CommanInput = Console.ReadLine();

                    Task <BankTransaction> depositTask = Task.Run(() => bankSimulator.Deposit(Convert.ToInt32(CommanInput.Split(",")[0].Trim()), CommanInput.Split(",")[1].Trim(),
                                                                                              Convert.ToDouble(CommanInput.Split(",")[2].Trim())));
                    tasks.Add(depositTask);
                    break;

                case "W":     // Withdrawal
                case "w":
                    log.WriteLine("Please enter account id, owner id,amount (1,123456789,100.5). ", ConsoleColor.White);
                    CommanInput = Console.ReadLine();

                    Task <BankTransaction> withdrawalTask = Task.Run(() => bankSimulator.Withdrawal(Convert.ToInt32(CommanInput.Split(",")[0].Trim()), CommanInput.Split(",")[1].Trim(),
                                                                                                    Convert.ToDouble(CommanInput.Split(",")[2].Trim())));

                    tasks.Add(withdrawalTask);
                    break;

                case "E":     //exit program
                case "e":
                    log.WriteLine("Thanks for using " + bank.Name + " bank :-)", ConsoleColor.Blue);
                    break;

                default:
                    log.WriteLine("invalid menu item.", ConsoleColor.Red);
                    break;
                }
            }
            catch (Exception ex)
            {
                log.WriteLine("Error. " + ex.Message, ConsoleColor.Red);
            }
            return(MenuInput);
        }