Exemplo n.º 1
0
        public void Test_IfWithdrawalValid_WriteToDatabase(decimal amount, decimal expectedAccountBalance)
        {
            //clear the database to get a clean account balance
            _testTransactionDbContext.Database.EnsureDeleted();
            _testDepositService.SubmitTransaction(500);

            _testWithdrawalService.SubmitTransaction(amount);
            var testAccountBalance = _testAccountHistoryService.GetAccountBalance();

            Assert.Equal(expectedAccountBalance, testAccountBalance);
        }
Exemplo n.º 2
0
        public static void LoggedInMenuOptions(int accountId, ref bool loggedIn)
        {
            //instanticate dependencies for depositService, withdrawalService and transactionService
            var loggedinAccountId  = accountId;
            var transactionOptions = new DbContextOptionsBuilder <TransactionDbContext>()
                                     .UseInMemoryDatabase("BankingAppDatabase")
                                     .Options;
            var transactionDbContext = new TransactionDbContext(transactionOptions);
            var transactionQueries   = new TransactionQueries(transactionDbContext, loggedinAccountId);

            var accountHistoryService = new AccountHistoryService(transactionQueries);

            while (loggedIn)
            {
                Console.WriteLine("Please choose from the following menu options:\n");
                Console.WriteLine("a) Make a deposit");
                Console.WriteLine("b) Make a withdrawal");
                Console.WriteLine("c) Check your balance");
                Console.WriteLine("d) See your transaction history");
                Console.WriteLine("e) Log out");
                Console.WriteLine("f) Quit");

                var menuChoice = Console.ReadLine();

                switch (menuChoice)
                {
                case "a":
                    var depositService = new DepositService(transactionQueries);
                    var depositAmount  = ValidateTransactionEntry("Deposit");
                    var depositMessage = depositService.SubmitTransaction(depositAmount);
                    Console.WriteLine(depositMessage);
                    break;

                case "b":
                    var withdrawalService = new WithdrawalService(transactionQueries);
                    var withdrawalAmount  = ValidateTransactionEntry("Withdrawal");
                    var withdrawalMessage = withdrawalService.SubmitTransaction(withdrawalAmount);
                    Console.WriteLine(withdrawalMessage);
                    break;

                case "c":
                    Console.WriteLine($"Your account balance is: ${accountHistoryService.GetAccountBalance()}");
                    break;

                case "d":
                    var transactionHistory = accountHistoryService.GetransactionHistory();

                    Console.WriteLine("Transaction History:\n");
                    foreach (var transaction in transactionHistory)
                    {
                        Console.WriteLine($"${transaction.Amount}");
                        Console.WriteLine(transaction.Timestamp);
                        Console.WriteLine("--------------------------------------------------");
                    }
                    break;

                case "e":
                    loggedIn = false;
                    break;

                case "f":
                    Quit();
                    break;

                default:
                    Console.WriteLine("Invalid selection, please choose again.\n");
                    break;
                }
            }
        }