private static void CreateWithdrawl(Bank bank) { Output.WhiteColor("* Uttag *"); while (true) { if (AskForAccount(bank, out var id)) { var account = bank.GetSingleAccount(id); Console.WriteLine($"Saldo innan uttag: {account.Balance.GetSwedishKr()}"); var amount = Input.AskForAmount(); if (account.ValidateWithdrawl(account, amount, bank, TransactionType.Withdrawl)) { account.CreateTransaction(account, null, amount, bank, TransactionType.Withdrawl); } else { Output.RedColor("\nTäckning saknas på kontot\n"); } Console.WriteLine($"Saldo efter uttag: {account.Balance.GetSwedishKr()}"); break; } else { Output.RedColor("Kontot existerar inte. Försök igen."); } } PrintStatistics(bank); }
private static void Main(string[] args) { try { Console.ForegroundColor = ConsoleColor.Cyan; var menu = new Menu(); var bank = new Bank(); var file = new FileManagement(); // Get current files //file.PrintCurrentDirectory(); file.GetFiles(bank); Console.WriteLine("\n*********************************"); Console.WriteLine("* Välkommen till kundbilden 2.0 *"); Console.WriteLine("*********************************\n"); menu.PrintMenu(); menu.GetChoiceAndExecute(bank); } catch (Exception) { Output.RedColor("Någonting gick helt galet!\nRing supporten på (08-701) 125 80"); } Console.ReadLine(); }
private static void CreateTransfer(Bank bank) { Output.WhiteColor("* Överföring *"); while (true) { Console.Write($"[Från] "); var fromId = Input.AskForAccount(); var fromCheck = Input.CheckForAccountWithAccountId(fromId, bank); if (fromCheck == false) { Output.RedColor("[Från] kontot existerar inte. Försök igen."); continue; } Console.Write("[Till] "); var toId = Input.AskForAccount(); var toCheck = Input.CheckForAccountWithAccountId(toId, bank); if (toCheck) { // if both from account and to account exists var fromAcc = bank.GetSingleAccount(fromId); var toAcc = bank.GetSingleAccount(toId); var amount = Input.AskForAmount(); // Print before change Console.WriteLine($"Saldo på konto ({fromAcc.Id}) innan överföring: {fromAcc.Balance.GetSwedishKr()}"); Console.WriteLine($"Saldo på konto ({toAcc.Id}) innan överföring: {toAcc.Balance.GetSwedishKr()}"); if (fromAcc.ValidateWithdrawl(fromAcc, amount, bank, TransactionType.Transfer)) { fromAcc.CreateTransaction(fromAcc, toAcc, amount, bank, TransactionType.Transfer); } else { Output.RedColor("\nTäckning saknas på kontot\n"); } // Print after change Console.WriteLine($"Saldo på konto ({fromAcc.Id}) efter överföring: {fromAcc.Balance.GetSwedishKr()}"); Console.WriteLine($"Saldo på konto ({toAcc.Id}) efter överföring: {toAcc.Balance.GetSwedishKr()}"); break; } else { Output.RedColor("[Till] kontot existerar inte. Försök igen."); } PrintStatistics(bank); } }
public void GetFiles(Bank bank) { // Get customer and accounts try { // Get customer try { GetCustomersAndAccounts(bank); } catch (FormatException) { // Tar hand om övriga fel Console.WriteLine($"Försöker hämta kunder från {CustomerAndAccountFile}, men formatering misslyckades.\n" + $"Fel uppkom på rad {_customerAndAccountFileCounter}"); throw; } } catch (IOException) { // Tar hand om fel vid inläsning Output.RedColor($"Kunde inte läsa in {CustomerAndAccountFile}..."); Console.WriteLine($"Se till att filen finns i:{Path}"); throw; } AddAccountsToCustomer(bank); // Get transactions //try //{ // GetTransactions(bank); //} //catch (IOException) //{ // // Tar hand om fel vid inläsning // Output.RedColor($"Kunde inte läsa in {TranFile}..."); // Console.WriteLine($"Se till att filen finns i:{Path}"); // throw; //} //catch (FormatException) //{ // // Tar hand om övriga fel // Console.WriteLine($"Försöker hämta transaktioner från {TranFile}, men formatering misslyckades.\n" + // $"Fel uppkom på rad {_tranFileCounter}"); // throw; //} }
public void DeleteCustomer(Customer customer) { var checkSumOfAccounts = ListOfAccounts.Where(x => x.CustomerId == customer.Id).Select(y => y.Balance).Sum(); if (checkSumOfAccounts == 0) { ListOfAccounts.Remove(customer.Accounts.FirstOrDefault()); ListOfCustomers.Remove(customer); Output.GreenColor($"Borttaget kundnummer: {customer.Id}"); } else { Output.RedColor("Det går inte att ta bort en kund som har saldo större en noll på något av sina konton."); } }
public static int AskForAccount() { while (true) { Console.Write("Ange kontonummer: "); if (int.TryParse(Console.ReadLine(), out int accountId)) { return(accountId); } else { Output.RedColor("Mata in kontonummer med siffror. Försök igen."); } } }
public static int AskForCustomer() { while (true) { Console.Write("Ange kundnummer: "); if (int.TryParse(Console.ReadLine(), out int customerId)) { return(customerId); } else { Output.RedColor("Mata in kundnummer med siffror. Försök igen."); } } }
public static int AskForAccountIdOrCustomerId() { while (true) { Console.Write("Kundnummer eller kontonummer? > "); if (int.TryParse(Console.ReadLine(), out int customerNrOrAccountNr)) { return(customerNrOrAccountNr); } else { Output.RedColor("Mata in kundnummer eller kontonummer med siffror. Försök igen."); } } }
private static void AmendCreditInterestRate(Bank bank) { Output.WhiteColor("* Ändra utlåningsränta *"); while (true) { if (AskForAccount(bank, out var id)) { var account = bank.GetSingleAccount(id); // Multiply rate with 100 var procentBefore = account.CreditInterestRate * 100; Console.WriteLine($"Nuvarande utlåningsränta (årsbasis): {procentBefore.GetProcent()}"); var rate = Input.AskForRate(); if (account.validateCreditRate(account, rate)) { account.AmendCreditInterestRate(account, rate); var procentAfter = account.CreditInterestRate * 100; Output.GreenColor($"Ny utlåningsränta: {procentAfter.GetProcent()}"); } else { Output.RedColor("\nUtlåningsräntan kan inte vara mindre än noll.\n"); } //if (account.validateCreditRate()) //{ // account.AmendCreditInterestRate(account); //} //else //{ // Output.RedColor("\nUtlåningsräntan kan inte vara mindre än noll.\n"); //} break; } else { Output.RedColor("Kontot existerar inte. Försök igen."); } } }
private static void AmendCreditLimit(Bank bank) { Output.WhiteColor("* Ändra kreditlimit *"); while (true) { if (AskForAccount(bank, out var id)) { var account = bank.GetSingleAccount(id); account.AmendCreditLimit(account); break; } else { Output.RedColor("Kontot existerar inte. Försök igen."); } } }
public static string AskFor(string input) { Console.Write($"{input}: "); var text = Console.ReadLine(); if (text != null && !text.Equals("")) { return(text.UpperFirstLetter()); } // Ask the same question again Output.RedColor($"{input} är obligatoriskt"); AskFor(input); // Return text if text is not equal to null or "" return(text); }
private static void PrintTransactions(Bank bank) { Output.WhiteColor("* Sök Transaktioner *"); while (true) { if (AskForAccount(bank, out var id)) { var account = bank.GetSingleAccount(id); bank.PrintTransactionsFor(account); break; } else { Output.RedColor("Kontot existerar inte. Försök igen."); } } }
private static void DeleteAccount(Bank bank) { Output.WhiteColor("* Ta bort konto *"); while (true) { if (AskForAccount(bank, out var id)) { var account = bank.GetSingleAccount(id); bank.DeleteAccount(account); break; } else { Output.RedColor("Kunden existerar inte. Försök igen."); } } PrintStatistics(bank); }
private static void ShowCustomer(Bank bank) { Output.WhiteColor("* Visa kundbild *"); while (true) { var id = Input.AskForAccountIdOrCustomerId(); var check = Input.CheckForCustomerWithCustomerIdOrAccountId(id, bank, out var customerId); if (check) { var customer = bank.GetSingleCustomer(customerId); bank.ShowCustomer(customer); break; } else { Output.RedColor("Kundnumret eller kontot existerar inte. Försök igen."); } } }
private static void AmendInterestRate(Bank bank) { Output.WhiteColor("* Ändra inlåningsränta *"); while (true) { if (AskForAccount(bank, out var id)) { var account = bank.GetSingleAccount(id); // Multiply rate with 100 var procentBefore = account.InterestRate * 100; Console.WriteLine($"Nuvarande inlåningsränta (årsbasis): {procentBefore.GetProcent()}"); // Get new interest rate and update it on the specific account var rate = Input.AskForRate(); if (account.ValidateInterestRate(account, rate)) { account.AmendInterestRate(account, rate); var procentAfter = account.InterestRate * 100; Output.GreenColor($"Ny inlåningsränta: {procentAfter.GetProcent()}"); } else { Output.RedColor("\nInlåningsräntan kan inte vara mindre än noll.\n"); } break; } else { Output.RedColor("Kontot existerar inte. Försök igen."); } } }
private static void DeleteCustomer(Bank bank) { Output.WhiteColor("* Ta bort kund *"); while (true) { var id = Input.AskForCustomer(); var check = Input.CheckForCustomerWithCustomerId(id, bank); if (check) { var customer = bank.GetSingleCustomer(id); bank.DeleteCustomer(customer); break; } else { Output.RedColor("Kunden existerar inte. Försök igen."); } } PrintStatistics(bank); }
public void DeleteAccount(Account account) { // Check sum of accounts var checkSumOfAccounts = ListOfAccounts.Where(x => x.Id == account.Id).Select(y => y.Balance).Sum(); // Count accounts var countAccounts = ListOfAccounts.Count(x => x.CustomerId == account.CustomerId); var customer = ListOfCustomers.FirstOrDefault(x => x.Id == account.CustomerId); // Can not delete account if sum is not zero or there is only one account // (customer always need an account) if (checkSumOfAccounts == 0 && countAccounts > 1) { ListOfAccounts.Remove(account); customer.Accounts.Remove(account); Output.GreenColor($"Borttaget kontonummer: {account.Id}"); } else { Output.RedColor("Kan ej ta bort kontot om:\n- det finns saldo\n- det är kundens enda konto"); } }
private static void CreateContribution(Bank bank, Account acc) { Output.WhiteColor("* Insättning *"); while (true) { if (AskForAccount(bank, out var id)) { var account = bank.GetSingleAccount(id); Console.WriteLine($"Saldo innan insättning: {account.Balance.GetSwedishKr()}"); var amount = Input.AskForAmount(); acc.CreateTransaction(null, account, amount, bank, TransactionType.Contribution); Console.WriteLine($"Saldo efter insättning: {account.Balance.GetSwedishKr()}"); break; } else { Output.RedColor("Kontot existerar inte. Försök igen."); } } PrintStatistics(bank); }
private static void AddNewAccount(Bank bank) { Output.WhiteColor("* Lägg till konto *"); while (true) { var id = Input.AskForCustomer(); var check = Input.CheckForCustomerWithCustomerId(id, bank); if (check) { var customer = bank.GetSingleCustomer(id); bank.AddNewAccount(customer); Console.WriteLine($"Nytt kontonummer: {customer.Accounts.Last().Id}"); break; } else { Output.RedColor("Kunden existerar inte. Försök igen."); } } PrintStatistics(bank); }
public static decimal ConvertStringToDecimalWithComma(string text) { while (true) { Console.Write($"{text}"); if (decimal.TryParse(Console.ReadLine(), out var nr)) { if (nr >= 0) { return(nr); } else { Output.RedColor("Belopp måste vara positivt"); continue; } } else { Output.RedColor("Try again!"); } } }
private void GetTransactions(Bank bank) { using (var reader = new StreamReader(Path + TranFile)) { _tranFileCounter = 0; var textfromfile = reader.ReadLine(); while (textfromfile != null) { _tranFileCounter++; var columns = textfromfile.Split(';'); // Check next row textfromfile = reader.ReadLine(); // Ignore the first line if (_tranFileCounter == 1) { continue; } /* How the writeline looks like * sw.WriteLine($"{item.TransactionId};{balance};{amount};" + * $"{item.CustomerId};{from};{to};" + * $"{item.TrnDate};{item.Type}"); */ // Get enum value if (Enum.TryParse(columns[7], out TransactionType type)) { } else { // Throw exception instead? Output.RedColor("Kunde inte omvandla transaktionstypen från filen"); } // Check if value is "" int?fromAcc = null; int?toAcc = null; if (columns[4] != "" && columns[4] != null) { fromAcc = int.Parse(columns[4]); } if (columns[5] != "" && columns[5] != null) { toAcc = int.Parse(columns[5]); } // Check transactions bank.ListOfTransactions.Add(new Transaction() { Id = int.Parse(columns[0]), FromAccountBalance = ConvertStringToDecimalWithDecimal(columns[1]), Amount = ConvertStringToDecimalWithDecimal(columns[2]), FromAccountId = fromAcc, ToAccountId = toAcc, Date = DateTime.Parse(columns[6]), Type = type }); } } Console.WriteLine($"Antal transaktioner: {bank.ListOfTransactions.Count}"); }
public void GetChoiceAndExecute(Bank bank) { try { var file = new FileManagement(); var account = new Account(); //var trnMgm = new TransactionManagement(); while (true) { Console.Write("\n> "); if (int.TryParse(Console.ReadLine(), out var nr)) { switch (nr) { case 0: file.QuitAndSave(bank); break; case 1: Search(bank); break; case 2: ShowCustomer(bank); break; case 3: AddNewCustomer(bank); break; case 4: DeleteCustomer(bank); break; case 5: AddNewAccount(bank); break; case 6: DeleteAccount(bank); break; case 7: CreateContribution(bank, account); break; case 8: CreateWithdrawl(bank); break; case 9: CreateTransfer(bank); break; case 10: PrintTransactions(bank); break; case 11: account.CalculateDailyInterest(bank); PrintStatistics(bank); break; case 12: AmendInterestRate(bank); break; case 13: AmendCreditLimit(bank); break; case 14: AmendCreditInterestRate(bank); break; case 100: Console.Clear(); PrintMenu(); break; default: Console.WriteLine("Try with a valid number instead!"); continue; } } else { Console.WriteLine("Try with numbers instead"); } } } catch (IOException) { Output.RedColor("Problem vid läsning eller sparande till fil. Kontakta admin!"); GetChoiceAndExecute(bank); } catch (FormatException) { Output.RedColor("Problem vid konvertering från text till nummer. Försök igen!"); GetChoiceAndExecute(bank); } catch (ArgumentNullException) { Output.RedColor("Input existerar ej i listan. Försök igen!"); GetChoiceAndExecute(bank); } catch (Exception) { Output.RedColor("Någonting gick fel... Försök igen!"); GetChoiceAndExecute(bank); } }