//Create string for transaction report public static string GenerateReport(User activeUser, decimal transactionAmount, User secondUser, bool IsDeposit, bool IsInternal) { //If conditions match send statement for deposit to other accounts if (IsDeposit && !IsInternal) { return($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFF")}\n" + $"{activeUser.username.ToUpper()} deposited {Account.FormatAmount(transactionAmount)}" + $" to {secondUser.username.ToUpper()}"); } //if conditions match send statetement for deposit to Internal else if (!IsDeposit && IsInternal) { return($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFF")}\n" + $"{activeUser.username.ToUpper()} deposited {Account.FormatAmount(transactionAmount)}" + $" to the Internal Bank Account"); } // Send deposit for withdraw else { return($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFF")}\n" + $"{activeUser.username.ToUpper()} withdrew {Account.FormatAmount(transactionAmount)}" + $" from {secondUser.username.ToUpper()}"); } }
//Admin withdraws funds from users, adds them to internal bank account public void Withdraw(string currentUser) { using (BankContext btx = new BankContext()) { while (true) { Console.Clear(); Console.WriteLine("Select user account you wish to withdraw from"); string suser = Console.ReadLine(); //Checks to see if admin tries to withdraw from the internal bank account if (currentUser == "admin" && suser == "admin") { Console.WriteLine("Invalid operation.Cannot withdraw from Internal Bank Account."); Console.ReadKey(); continue; } else { try { var userToWithdrawFrom = CreateUser(btx, suser); var accountToWithdrawFrom = CreateAccount(btx, suser); var ActiveUser = CreateUser(btx, currentUser); var ActiveAccount = CreateAccount(btx, currentUser); do { Console.Clear(); try { Console.Write("Select the amount you wish to withdraw:\n>"); decimal withdrawnAmount = decimal.Parse(Console.ReadLine().Replace(",", ".")); //Checks for negative amount entries and if the normal user has more money than the requested amount if (withdrawnAmount > 0 && accountToWithdrawFrom.Amount >= withdrawnAmount) { Account.UpdateAccounts(ActiveAccount, accountToWithdrawFrom, btx); Account.UpdateAmount(ActiveAccount, accountToWithdrawFrom, withdrawnAmount, false); Account.UpdateTime(ActiveAccount, accountToWithdrawFrom); Console.Clear(); Console.WriteLine($"Successfully withdrawn {Account.FormatAmount(withdrawnAmount)}"); //Add transaction to buffer FileAccess.AddToBuffer(GenerateReport(ActiveUser, withdrawnAmount, userToWithdrawFrom, false, false)); btx.SaveChanges(); break; } else { Console.WriteLine("Invalid amount, please try again"); Console.ReadKey(); continue; } } catch (Exception) { Console.WriteLine("This is not a valid entry.Please try again."); Console.ReadKey(); } } while (true); break; } catch (Exception) { Console.WriteLine("Invalid entry, user does not exist"); Console.ReadKey(); } } } } }
public void Deposit(string currentUser, bool depositToOther) { using (BankContext btx = new BankContext()) { while (true) { Console.Clear(); //True equals to despositing to other accounts and not to internal if (depositToOther) { Console.WriteLine("Select user account you wish to deposit to"); string suser = Console.ReadLine(); //Checks to determine if admin tries to deposit to the internal if (currentUser == "admin" && suser == "admin") { Console.WriteLine("Invalid operation.Administrators cannot deposit to Internal Bank Account."); Console.ReadKey(); continue; } //Checks to determine if user tries to deposit to themselves else if (currentUser != "admin" && currentUser == suser && suser != "admin") { Console.WriteLine("Invalid operation.Only deposit to other members allowed"); Console.ReadKey(); continue; } //Checks to determine if user tries to deposit to internal else if (currentUser != "admin" && suser == "admin") { Console.WriteLine("Invalid operation.Please use the Deposit to Internal Bank Account option."); Console.ReadKey(); continue; } else { try { var userToDeposit = CreateUser(btx, suser); var accountToDeposit = CreateAccount(btx, suser); var ActiveUser = CreateUser(btx, currentUser); var ActiveAccount = CreateAccount(btx, currentUser); do { Console.Clear(); try { Console.Write("Select the amount you wish to deposit:\n>"); decimal depositedAmount = decimal.Parse(Console.ReadLine().Replace(",", ".")); //Checks for negative amount entries and if the active user has sufficient money to make the deposit if (depositedAmount > 0 && ActiveAccount.Amount >= depositedAmount) { Account.UpdateAccounts(ActiveAccount, accountToDeposit, btx); Account.UpdateAmount(ActiveAccount, accountToDeposit, depositedAmount, true); Account.UpdateTime(ActiveAccount, accountToDeposit); Console.Clear(); Console.WriteLine($"Successfully deposited {Account.FormatAmount(depositedAmount)}"); //Adds transaction to buffer FileAccess.AddToBuffer(User.GenerateReport(ActiveUser, depositedAmount, userToDeposit, true, false)); btx.SaveChanges(); break; } else { Console.WriteLine("Invalid entry, please retype the amount"); Console.ReadKey(); continue; } } catch (Exception) { Console.WriteLine("This is not a valid entry.Please try again."); Console.ReadKey(); } } while (true); break; } catch (Exception) { Console.WriteLine("Invalid entry, user does not exist"); Console.ReadKey(); } } } //Deposit to Internal else { try { var Internalaccount = CreateAccount(btx, "admin"); var InternalUser = CreateUser(btx, "admin"); var user = CreateUser(btx, currentUser); var CurrentUserAccount = CreateAccount(btx, currentUser); Console.Write("Select the amount you wish to deposit:\n>"); decimal depositedAmount = decimal.Parse(Console.ReadLine().Replace(",", ".")); //Checks for negative amount entries and if the active user has sufficient money to make the deposit if (depositedAmount > 0 && CurrentUserAccount.Amount >= depositedAmount) { Account.UpdateAccounts(CurrentUserAccount, Internalaccount, btx); Account.UpdateAmount(CurrentUserAccount, Internalaccount, depositedAmount, true); Account.UpdateTime(CurrentUserAccount, Internalaccount); Console.Clear(); Console.WriteLine($"Successfully deposited {Account.FormatAmount(depositedAmount)}"); //Adds transaction to buffer FileAccess.AddToBuffer(GenerateReport(user, depositedAmount, InternalUser, false, true)); btx.SaveChanges(); break; } else { Console.WriteLine("Invalid entry, please retype the amount"); Console.ReadKey(); } } catch (Exception) { Console.WriteLine("This is not a valid entry.Please try again."); Console.ReadKey(); } } } } }
//Helper method for the override public String ToString(Account account) { var dt = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFF"); return($"{dt}\n{username.ToUpper()}'s Account Balance is: {Account.FormatAmount(account.Amount)}"); }