public void SimulationDailyTransactions()
        {
            try
            {
                using (var context = new DailyTransactionSimulatorDbContext())
                {
                    var transaction = CreateRandomTransaction();
                    var account     = accounts.Where(a => a.AccountNo == transaction.AccountNo).FirstOrDefault();

                    var accountContext = new RandomAccountCreatorDbContext();

                    if (transaction.Type == TransactionType.Incoming)
                    {
                        account.Balance = account.Balance + transaction.Amount;
                    }
                    else if (transaction.Type == TransactionType.Outgoing)
                    {
                        var newBalance = account.Balance - transaction.Amount;

                        if (newBalance < 0)
                        {
                            transaction.Status      = TransactionStatus.Failed;
                            transaction.Description = StatusDescription.InsufficientFund;
                        }
                        else
                        {
                            account.Balance = newBalance;
                        }
                    }

                    if (transaction.Status != TransactionStatus.Failed)
                    {
                        accountContext.Update(account);
                        if (accountContext.SaveChanges() == 1)
                        {
                            Console.WriteLine($"successfully updated account. new balance is {account.Balance}");
                            transaction.Status      = TransactionStatus.Success;
                            transaction.Description = StatusDescription.Success;
                        }
                        else
                        {
                            transaction.Status      = TransactionStatus.Failed;
                            transaction.Description = StatusDescription.SystemError;
                            Console.WriteLine("transaction failed to process");
                        }
                    }

                    context.Transactions.Update(transaction);
                    if (context.SaveChanges() == 1)
                    {
                        Console.WriteLine("successfully inserted transaction.");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("an error occured");
                Console.WriteLine($"[Error Message] {ex.Message}");
            }
        }
        private void LoadAccounts()
        {
            try
            {
                // get all accounts from the database

                using (var accountContext = new RandomAccountCreatorDbContext())
                {
                    accounts      = accountContext.Accounts.ToList();
                    totalAccounts = accounts.Count();
                    Console.WriteLine($"Successfully loaded {accounts.Count} accounts....");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("an error occured while attempting to load accounts");
                Console.WriteLine($"[Error Message] {ex.Message}");
            }
        }