예제 #1
0
        public static Customer AskForCustomerInfo()
        {
            Console.WriteLine("* Lägg till ny kund *");

            Output.WhiteColor("Obligatoriskt");
            var name    = AskFor("Namn");
            var adress  = AskFor("Adress");
            var zipCode = AskFor("Postnummer");
            var city    = AskFor("Postort");
            var orgNr   = AskFor("Organisationsnummer");

            Output.WhiteColor("Valfritt");
            Console.Write($"Country:");
            var country = Console.ReadLine();

            Console.Write($"Region: ");
            var region = Console.ReadLine();

            Console.Write($"Telefon: ");
            var tel = Console.ReadLine();

            return(new Customer()
            {
                Name = name,
                Adress = adress,
                City = city,
                Country = country,
                ZipCode = zipCode,
                Region = region,
                OrganisationNumber = orgNr,
                Telephone = tel
            });
        }
예제 #2
0
        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);
        }
예제 #3
0
 private static void PrintStatistics(Bank bank)
 {
     Output.WhiteColor("Statistik");
     Console.WriteLine($"Antal kunder: {bank.ListOfCustomers.Count}");
     Console.WriteLine($"Antal konton: {bank.ListOfAccounts.Count}");
     Console.WriteLine($"Totalt saldo: {bank.ListOfAccounts.Select(x => x.Balance).Sum().GetSwedishKr()}");
     Console.WriteLine($"Antal transaktioner: {bank.ListOfTransactions.Count()}");
 }
예제 #4
0
        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);
            }
        }
예제 #5
0
        private static void Search(Bank bank)
        {
            Output.WhiteColor("* Sök Kund *");
            var nameOrCity = Input.AskFor("Namn eller postort");

            var result = bank.GetCustomers(nameOrCity);

            foreach (var item in result)
            {
                Console.WriteLine($"{item.Id}: {item.Name}");
            }
        }
예제 #6
0
 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.");
         }
     }
 }
예제 #7
0
        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.");
                }
            }
        }
예제 #8
0
        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.");
                }
            }
        }
예제 #9
0
        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);
        }
예제 #10
0
        public void QuitAndSave(Bank bank)
        {
            var countCustomers = bank.ListOfCustomers.Count;
            var countAccounts  = bank.ListOfAccounts.Count;
            var sumBalance     = bank.ListOfAccounts.Select(x => x.Balance).Sum();
            var countTrans     = bank.ListOfTransactions.Count;

            Output.WhiteColor("* Avsluta och spara *");
            Console.WriteLine($"Antal kunder: {countCustomers}");
            Console.WriteLine($"Antal konton: {countAccounts}");
            Console.WriteLine($"Totalt saldo på konton: {sumBalance.GetSwedishKr()}");
            Console.WriteLine($"Antal transaktioner: {countTrans}");

            // Create files
            CreateCustomersAndAccountsFile(bank);
            CreateTransactionsFile(bank);

            // Close the console
            Console.ReadLine();
            Environment.Exit(0);
        }
예제 #11
0
        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.");
                }
            }
        }
예제 #12
0
        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.");
                }
            }
        }
예제 #13
0
        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);
        }
예제 #14
0
        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);
        }
예제 #15
0
        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);
        }