Пример #1
0
        // skapar en metod för att kunna se ditt sparkonto.
        public override void ShowAccount()
        {
            Console.Title = "Savings Account";

            bool foundClient = false;
            bool IsNumber;
            int  id = 0;


            // Testar ett nytt sätt att lösa funktionen av metoden CheckIfNumber. Fungerar att implementera den metoden här.
            // Programmet gör detta sålänge isNumber är false som används för att se om inmatning av id är en siffra.
            do
            {
                Console.Write("Enter your id: ");
                // Testar om inmatning av id är en siffra och konverterar ev rätt inmatning till int.
                try
                {
                    IsNumber = true;
                    id       = int.Parse(Console.ReadLine());
                }

                // är inmatningen inte en siffra körs nedanstående kod.
                catch
                {
                    Colours.Red("Must be a number.\n");
                    IsNumber = false;
                }

                // om inmatning av id är korrekt skriver programmet ut information gällande matchande id för klient vid sparkonto.

                if (IsNumber)
                {
                    foreach (Client client in Client.clientList)
                    {
                        if (id == client.id)
                        {
                            Console.Title += $" - {client.name}";
                            Interest(client);
                            Console.WriteLine($"ID: {client.id}");
                            Console.WriteLine($"Name: {client.name}");
                            Console.WriteLine($"Savings Account Balance: {client.savingsAccount.amount.ToString("F2")}");
                            Console.WriteLine($"Member since: {client.creationDate}");
                            Console.WriteLine();

                            foundClient = true;
                            break;
                        }
                    }
                }
            } while (!IsNumber);
            // hittar vi ingen klient i listan så skrivs nedanstående ut.
            if (!foundClient)
            {
                Colours.Red("No such client was found.\n\n");
            }
            // ger möjligheten till användare att återgå till huvudmenyn.
            Colours.Red("Press any key to return to Main Menu");
            Console.ReadKey();
            Menu.MainMenu();
        }
Пример #2
0
        public static string CheckNameValidity(string firstOrLast)
        {
            bool   InvalidInput;
            string input = "";

            do
            {
                InvalidInput = true;

                Console.WriteLine();
                Console.Write($"Enter {firstOrLast} name: ");
                input = Console.ReadLine();

                //Om alla chars i en input är en bokstav och hela strängen inte består av bara mellanslag
                if (input.All(char.IsLetter) && !string.IsNullOrWhiteSpace(input))
                {
                    InvalidInput = false;
                }
                //Om input bara är mellanslag eller ingenting skrivs ett felmeddelande ut
                if (string.IsNullOrWhiteSpace(input))
                {
                    Colours.Red("Name can not be white space\n");
                }
                //Om inte alla chars i input är bokstäver skrivs ett felmeddelande ut
                else if (!input.All(char.IsLetter))
                {
                    Colours.Red("Name can only consist of letters A-Ö.\n");
                }
            } while (InvalidInput);
            // Returnerar en string
            return(input);
        }
Пример #3
0
        // En overridad metod som vi använder för att se ett specifikt kontos checking account + väsentliga uppgfiter.
        public override void ShowAccount()
        {
            Console.Title = "Checking Account";

            // Använder en bool för att säga om vi har hittat ett konto eller inte vid input av id nr.
            bool foundClient = false;

            Console.WriteLine("Enter your ID:");
            decimal inputId = Transactions.CheckIfNumber(choiceId);

            foreach (Client client in Client.clientList)
            {
                if (inputId == client.id)
                {
                    Console.Title += $" - {client.name}";
                    Console.WriteLine("----------------");
                    Console.WriteLine($"ID: {client.id}");
                    Console.WriteLine($"Name: {client.name}");
                    Console.WriteLine($"Checking Account Balance: {client.checkingAccount.amount}");
                    Console.WriteLine($"Member since: {client.creationDate}");
                    Console.WriteLine("----------------");

                    // om det finns mer än 0 biobiljetter och klient ej fått bonus ska programmet gå igenom interfacet
                    if (ticketAmount > 0 && client.cinemaBonus == false)
                    {
                        CinemaTicket(client);
                    }
                    Console.WriteLine();
                    //om klient har fått bonus och valt film för sin biobiljett ska vi skriva ut filmens namn.
                    if (client.cinemaBonus == true && client.movieChoice != null)
                    {
                        //Vill vi ha ljud?
                        Console.Write("You have a free cinema ticket for "); Colours.Cyan(client.movieChoice.title);
                        Console.WriteLine();
                    }

                    Console.WriteLine();
                    foundClient = true;
                    break;
                }
            }
            if (!foundClient)
            {
                Console.WriteLine("Couldn't find the id.");
            }

            Colours.Red("Press any key to return to Main Menu");
            Console.ReadKey();
            Menu.MainMenu();
        }
Пример #4
0
        // skapar funktionen för att kolla om inmatning är ett nummer eller en siffra och returnerar inmatning.
        public static decimal CheckIfNumber(string aTransactionType)
        {
            decimal input = 0;

            // skapar en for loop som testar input.
            for (int i = 0; i < 1; i++)
            {
                // Vid inmatning av id ovan referrerar programmet till nedanstående ReadLine.
                try
                {
                    string test = Console.ReadLine();

                    if (test.Contains("."))
                    {
                        test = test.Replace('.', ',');
                    }
                    input = decimal.Parse(test);
                }

                // istället för att programmet kraschar går programmet över till catch.
                catch
                {
                    // Felhanterar inmatning av insättning och överföring.
                    if (aTransactionType == choiceDeposit || aTransactionType == choiceTransaction)
                    {
                        Colours.Red("Not a number\n");
                        ErrorMessage();
                        Console.Write("Please reenter the amount: ");
                        i -= 1;
                    }

                    // Felhanterar inmatning av id.
                    else
                    {
                        Colours.Red("Not a number\n");
                        ErrorMessage();
                        Console.Write("Please reenter the ID: ");
                        i -= 1;
                    }
                }
            }
            return(input);
        }
Пример #5
0
        // Vi skapar en metod för att kunna se genomförda transaktioner
        public static void ShowTransactions()
        {
            Console.Title = "List of Transactions";

            // Skapar en bool för att se om listan innehåller något i huvud taget.
            bool IsEmpty = !transactionList.Any();

            // Finns det inget i listan så skriv ut följande och gå tillbaka till main menu.
            if (IsEmpty)
            {
                Console.WriteLine("There are no transactions at the moment");
                Colours.Red("Press any key to continue ");
                Console.ReadKey();
                Menu.MainMenu();
            }
            // Om det finns något i listan så skriver den ut innehållet.
            else
            {
                // Skriver ut varje transkation och om det är en insättning skriver den ut else.
                // Är det en transaktion skriver den ut If.
                foreach (Transactions trans in transactionList)
                {
                    Console.WriteLine($"Transaction type:   {trans.transactionType}");
                    Console.WriteLine($"Date and time:      {trans.dateAndTime}");
                    Console.Write($"Amount: "); Colours.Green($"            {trans.amount}"); Console.WriteLine(" kr");

                    if (trans.transactionType == choiceTransaction)
                    {
                        Console.WriteLine($"From client id:     {trans.firstClient.id}");
                        Console.WriteLine($"To client id:       {trans.secondClient.id}");
                    }
                    else
                    {
                        Console.WriteLine($"To client id:       {trans.firstClient.id}");
                    }
                    Console.WriteLine();
                }
                Colours.Red("Press any key to continue");
                Console.ReadKey();
                Menu.MainMenu();
            }
        }
Пример #6
0
        //Loopar igenom klientlistan och visar all information om varje klient.
        public static void ShowAllAccounts()
        {
            Console.Title = "All Clients";
            foreach (Client client in Client.clientList)
            {
                Console.WriteLine($"ID: {client.id}\n");
                Console.WriteLine($"Name: {client.name}");
                Console.WriteLine($"Checking Account Balance: {client.checkingAccount.amount} kr");
                Console.WriteLine($"Savings Account Balance: {client.savingsAccount.amount} kr");
                Console.WriteLine($"Member since: {client.creationDate}");

                Console.WriteLine();
            }
            Colours.Red("Press any key to continue");
            Console.ReadKey();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine(new string(' ', Console.BufferWidth - (Console.CursorTop - 2)));
            Console.SetCursorPosition(1, Console.CursorTop - 2);
        }
Пример #7
0
        // Skapar en metod för att ge användaren en möjlighet att göra ytterligare en insättning/överföring efter genomförd sådan.
        // Ger även användaren möjligheten att återgå till main menu om det önskas.
        // Tar in transaktionstypen för att utforma olika val utifrån värdet.
        public static void RepeatQuery(string aTransactionType)
        {
            // Skapar en variabel där inmatning av val sparas.
            string choice;

            Console.WriteLine();
            Console.WriteLine($"Would you like to make a new {aTransactionType.ToLower()}?");

            // Skapar en doWhile för att vi vill att programmet ska köra denna del tills avändaren har gjort ett val.
            do
            {
                Console.Write("Enter 'Y' or 'N': ");
                // konverterar valet till stor bokstav för att hantera ev fel av inmat av liten bokstav.
                choice = Console.ReadLine().ToUpper();

                // uppfylls nedanstående krav får användaren göra en ny insättning.
                if (choice == "Y" && aTransactionType == "Deposit")
                {
                    ExecuteDeposit();
                }

                // upfylls nedanstående krav får användaren göra en ny överföring.
                else if (choice == "Y" && aTransactionType == "Transaction")
                {
                    ExecuteTransactions();
                }
                // uppfylls nedanstående krav går programmet till huvudmenyn.
                else if (choice == "N")
                {
                    Menu.MainMenu();
                }
                // skriver användaren något annat än y och n skriv fel inmatning ut.
                else
                {
                    Colours.Red("Wrong input!\n");
                    Console.WriteLine();
                }
            } while (choice != "Y" && choice != "N");
        }
Пример #8
0
        //CreateClient är till för att skapa ett klient objekt.
        public static void CreateClient()
        {
            Console.Title = "Create Client";
            int    id          = ++idNumberMaker;
            string fullName    = null;
            string firstOrLast = "first";
            bool   ValidateName;

            Console.WriteLine("Creating client");
            Console.WriteLine("----------------");

            do
            {
                ValidateName = false;

                string input   = CheckNameValidity(firstOrLast);
                char[] letters = input.ToCharArray();

                for (int i = 0; i < letters.Length; i++)
                {
                    if (letters[i] == letters[0])
                    {
                        //Vi vill göra första bokstaven i namnet till stor bokstav
                        char letterChar = letters[i];
                        letterChar = char.ToUpper(letterChar);
                        letters[i] = letterChar;
                    }
                }

                if (firstOrLast == "first")
                {
                    fullName    = new string(letters);
                    firstOrLast = "last";
                }
                else if (firstOrLast == "last")
                {
                    //Vi slår ihop namnen till ett och samma.
                    fullName    += " " + new string(letters);
                    ValidateName = true;
                }
            } while (!ValidateName);

            //Vi skapar objektet creationDate av typen DateTime för att logga när kund är skapad.
            DateTime creationDate = DateTime.Now;

            CheckingAccount checkingAccount = new CheckingAccount(0);
            SavingsAccount  savingsAccount  = new SavingsAccount(5000);

            //Vi skapar ett objekt utifrån en konstruktor i client som vi använder för att se kundens alla uppgifter.
            Client client = new Client(fullName, id, creationDate, checkingAccount, savingsAccount);

            Console.WriteLine();
            #region Easter Egg
            if (client.name == "Snake Snakesson")
            {
                Snakeclass.Snake.SnakeGame();
                Console.Clear();
                Console.SetWindowSize(100, 40);
            }
            #endregion
            Player.SoundLocation = "confirm.wav";
            Player.Play();
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("----------------");
            Console.WriteLine("Client created");
            Console.WriteLine("----------------");
            Console.WriteLine($"Name: {fullName}\nID: {id}\nAccount created at: {creationDate}\nChecking Account: {checkingAccount.amount} kr\nSavings Account: {savingsAccount.amount} kr");
            Console.WriteLine("----------------");
            Console.ResetColor();

            //Den skapade klienten läggs till i vår klientlista.
            Client.clientList.Add(client);

            Console.WriteLine();
            Colours.Red("Press any key to return to Main Menu");
            Console.ReadKey();
            Menu.MainMenu();
        }
Пример #9
0
        public static void RemoveExistingClients()
        {
            Console.Title = "Remove Client";
            Client clientToRemove = new Client();
            bool   foundClient    = false;

            do
            {
                Console.Clear();
                foreach (Client client in Client.clientList)
                {
                    Console.WriteLine($"{client.id}) {client.name}");
                }

                Console.WriteLine();

                Console.Write("Enter the id of the client you wish to remove?: ");
                decimal id = Transactions.CheckIfNumber("id");

                foreach (Client client in Client.clientList)
                {
                    if (id == client.id)
                    {
                        clientToRemove = client;
                        foundClient    = true;
                    }
                }

                if (!foundClient)
                {
                    Colours.Red("No such client was found\n");
                    Transactions.ErrorMessage();
                }
            } while (!foundClient);

            string choice;

            do
            {
                Colours.Red($"Are you sure you want to remove {clientToRemove.name}? "); Console.Write("Y/N: ");

                choice = Console.ReadLine().ToUpper();

                if (choice == "Y")
                {
                    Client.clientList.Remove(clientToRemove);
                }
                else if (choice == "N")
                {
                    Console.WriteLine("Going back to main menu");
                    Console.WriteLine();
                    Console.ReadKey();
                    Menu.MainMenu();
                }
                else
                {
                    Console.WriteLine("Wrong input!");
                }
            } while (choice != "Y" && choice != "N");

            Console.WriteLine();
            Colours.Red($"[DELETED] {clientToRemove.name}");

            Console.ReadKey();
            Menu.MainMenu();
        }
Пример #10
0
        //Denna metoden kollar om klienten har uppfyllt kraven för att få en biobiljett och skriver isf ut det.
        public void CinemaTicket(Client client)
        {
            // Kraven för att klient ska uppnå biobiljetts bonus.
            if ((DateTime.Now.Date - client.creationDate.Date).Days > 30 && client.checkingAccount.amount > 100 && client.cinemaBonus == false)
            {
                Console.WriteLine();
                Console.BackgroundColor = ConsoleColor.Green;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.WriteLine("You have received a free cinema ticket, ONLY ONE!");
                Console.ResetColor();
                Console.WriteLine();

                // skapar en counter för att visa en siffra framför filmerna i filmmenyn.
                int counter = 1;
                // loopar igenom filmlistan och skriver ut objektens attribut för filmernas titel.
                foreach (Movies movie in Movies.movieList)
                {
                    Console.Write(counter + ") "); Colours.Cyan(movie.title);
                    Console.WriteLine();
                    Console.Write("     tickets left: ");

                    if (movie.ticketsAvailable < 2)
                    {
                        Colours.Red($"{movie.ticketsAvailable}\n");
                    }
                    else
                    {
                        Colours.Green($"{movie.ticketsAvailable}\n");
                    }
                    counter++;
                }
                Console.WriteLine("----------");
                Console.Write("0) "); Colours.Red("No thanks, I don't want a movie ticket\n");
                // använder variablen för att jämföra user input med filmobjektets indexPlace.
                string choice;
                // använder variablen för att användaren alltid ska behöva göra ett val tills ett möjligt val är gjort.
                bool invalidInput;
                // använder variabeln för att säga om vi har hittat en film eller inte.
                bool foundMovie = false;

                do
                {
                    Console.WriteLine();
                    Console.Write("Choose which movie: ");

                    choice = Console.ReadLine();

                    invalidInput = false;

                    // loopar igenom movielistan och kollar om användarens val stämmer överrens med filmobjektets indexPlace.
                    foreach (Movies movie in Movies.movieList)
                    {
                        //  konverterar till string för att vi senare i IF, måste jämföra två likadana datatyper.
                        //  Använder oss utav string för att det hanterar även bokstäver vid inmatning
                        string indexPlace = Convert.ToString(movie.indexPlace);

                        if (choice == indexPlace)
                        {
                            // Tar in movie och klient som argument för att vi vill ha klientens val av film.
                            Movies.UpdateMovies(movie, client);
                            foundMovie = true;
                            break;
                        }
                    }
                    if (choice == "0")
                    {
                        Console.WriteLine("You chose not to go to the movies.");
                        client.movieChoice = null;
                    }
                    else if (!foundMovie)
                    {
                        Console.WriteLine("Invalid input");
                        invalidInput = true;
                    }
                } while (invalidInput);

                client.cinemaBonus = true;
            }
            // detta är else if till första if. Hade detta varit en enskild if hade programmet kört båda stegen
            // När vi har valt en biljett sedan innan.
            else if (client.cinemaBonus == true)
            {
                Console.WriteLine();
                Console.Write($"You have claimed a cinema ticket for "); Colours.Cyan(client.movieChoice.title);
                Console.WriteLine();
            }
        }
Пример #11
0
        // skapar funktionen för att se om inmatning av insättning är korrekt enligt nedanstående logik.
        public static decimal ValidateAmount(string aTransactionType, Client client, decimal aInputAmount)
        {
            // Skapar en switch case för två olika scenarion. Insättning och Transaktion.
            switch (aTransactionType)
            {
            // När vi kallar på funktionen tas TransactionType in som argument för att välja vilket case programmet ska utföra.
            case "Deposit":
                // Går inte ur denna loop förrens användare har matat in mer än 100kr eller ett värde som är jämt delbart med 100.
                while (aInputAmount < 100 || aInputAmount % 100 != 0)
                {
                    if (aInputAmount < 100)
                    {
                        Colours.Red("You have to deposit a larger amount!\n");
                        Colours.Red("The smallest amount to deposit is 100 kr\n");
                        Console.WriteLine();
                        Console.Write("Enter the amount to deposit: ");
                        // kallar på checkIfNumber igen för att mata in ett nytt värde.
                        aInputAmount = CheckIfNumber(choiceDeposit);
                    }
                    else if (aInputAmount % 100 != 0)
                    {
                        Colours.Red("You can only add amount in even 100 kr bills\n");
                        Console.WriteLine();
                        Console.Write("Enter the amount to deposit: ");
                        // kallar på checkIfNumber igen för att mata in ett nytt värde.
                        aInputAmount = CheckIfNumber(choiceDeposit);
                    }
                }
                // break till för detta case i switchen
                break;

            case "Transaction":

                // Går inte ur denna loop förrens användare har matat in mer än 0kr eller ett värde som är mindre eller = klientens Checkacc.
                while (aInputAmount <= 0 || aInputAmount > client.checkingAccount.amount)
                {
                    if (aInputAmount <= 0)
                    {
                        Colours.Red("You can only transfer a positive amount.\n");
                        Console.WriteLine();
                        Console.Write("Enter the amount to transfer: ");

                        // kallar på checkIfNumber igen för att mata in ett nytt värde
                        aInputAmount = CheckIfNumber(choiceTransaction);
                    }
                    else if (aInputAmount > client.checkingAccount.amount)
                    {
                        Colours.Red("You can't transfer more money than you have\n");
                        Console.WriteLine($"You have {client.checkingAccount.amount} kronor in your checking account");
                        Console.WriteLine();
                        Console.Write("Enter the amount to transfer: ");

                        // kallar på checkIfNumber igen för att mata in ett nytt värde
                        aInputAmount = CheckIfNumber(choiceTransaction);
                    }
                }

                // break till för detta case i switchen
                break;
            }
            return(aInputAmount);
        }
Пример #12
0
        // skapar en metod som är till för att göra insättningar.
        public static void ExecuteDeposit()
        {
            Console.Title = "Deposit";

            Console.Clear();
            // skapar endast en first client för att vi inte kommer skapa en second client när vi gör en insättning.
            Client  firstClient = new Client();
            decimal inputAmount;
            bool    foundClient = false;

            Console.Clear();
            Console.WriteLine("--- Deposit Money ---");
            Console.WriteLine();

            // gör en do While för att vi vill att användare ska mata in klient id tills programmet hittar en matchande klient.
            do
            {
                Console.Write("Enter the ID of the customer: ");
                // Här kollar vi om inmatningen är ett nummer genom metoden CheckIfNumber.
                // Är det inte det, så skriver programmet ut att det inte är ett nummer samt att man ska mata in ett id igen.
                decimal id = CheckIfNumber(choiceId);
                Console.WriteLine();

                // Systemet kontrollerar att det inmatade id:t en klients id i klientlistan.
                foreach (Client client in Client.clientList)
                {
                    if (id == client.id)
                    {
                        firstClient = client;
                        foundClient = true;
                        break;
                    }
                }
                // Hittar vi ingen klient med det inmatade id:t visar vi felmedd.
                if (!foundClient)
                {
                    Colours.Red("No such client was found\n");
                    ErrorMessage();
                }
            } while (!foundClient);

            Console.WriteLine($"Name: {firstClient.name}");
            Console.WriteLine();

            Console.Write("Enter the amount to deposit: ");

            //kollar att det inmatade värdet är ett nummer och även om det är ett belopp genom argumentet ChoiceDeposit.
            // Det returnerade värdet från CheckIfNumber stoppas sedan in i variabeln inputAmount.
            inputAmount = CheckIfNumber(choiceDeposit);

            // Kollar så att summan man försöker föra över är godkänd enligt logiken i ValidateAmount.
            // Det returnerade värdet från ValidateAmount stoppas sedan in i variabeln inputAmount.
            inputAmount = ValidateAmount(choiceDeposit, firstClient, inputAmount);

            player.SoundLocation = "ca-ching.wav";
            player.Play();

            Console.WriteLine();
            Console.Write($"Sucessfully deposited ");
            Colours.Green($"{inputAmount}");
            Console.WriteLine(" kr to your account!");

            // När transaktionen är godkänd säger vi att klientens checkingAcc är uppdaterat med summan av överföringen.
            firstClient.checkingAccount.amount += inputAmount;

            DateTime dateAndTime = DateTime.Now;



            Console.WriteLine($"{firstClient.name}, you now have {firstClient.checkingAccount.amount} kr in your checking account");
            Console.WriteLine();

            string toAccountType = "Checking Account";

            // Skapar ett objekt av transaktions klassen från en konstruktor.
            Transactions trans = new Transactions(dateAndTime, inputAmount, choiceDeposit, toAccountType, firstClient);

            // Lägger till den genomförda transaktionen till listan av transaktioner.
            transactionList.Add(trans);

            // Kallar på RepeatQuery för att ge användaren valet att göra en ny insättning med hjälp av angivet argument.
            RepeatQuery(choiceDeposit);
        }
Пример #13
0
        // Skapar en metod för att genomföra en överföring.
        public static void ExecuteTransactions()
        {
            Console.Title = "Transaction";

            Console.Clear();
            // Skapar en variabel där inmatning av belopp sparas.
            decimal inputAmount;
            // skapar en bool som säger om vi har hittat en klient eller inte.
            bool foundClient = false;
            // skapar ett objekt av klient som vi kallar för första klienten.

            Client firstClient = new Client();
            // skapar ett objekt av klient som vi kallar för andra klienten.
            Client secondClient = new Client();

            // gör en do While för att vi vill att användare ska mata in klient id tills programmet hittar en matchande klient.
            do
            {
                Console.Clear();

                Console.Write("Please enter your account ID: ");
                // Här kollar vi om inmatningen är ett nummer genom metoden CheckIfNumber.
                // Är det inte det, så skriver programmet ut att det inte är ett nummer samt att man ska mata in ett id igen.
                decimal firstId = CheckIfNumber(choiceId);

                Console.WriteLine();
                // letar igenom klient listan. Vi för över infomrationen från klienten vi är på till first client.
                // Om det inmatade id:t hittas i listan av klienter, sätter vi även bool foundclient till true.
                foreach (Client client in Client.clientList)
                {
                    if (firstId == client.id)
                    {
                        firstClient = client;
                        foundClient = true;
                    }
                }
                // Hittar vi ingen klient med det inmatade id:t visar vi felmedd.
                if (!foundClient)
                {
                    Colours.Red("No such client was found\n");
                    ErrorMessage();
                }
            } while (!foundClient);

            // Om klientens checkingAcc är 0 eller mindre skriver vi ut den informationen och ger alternativet
            // att göra en ny transaktion via RepeatQuery metoden och choiseTransaction som argument.
            if (firstClient.checkingAccount.amount <= 0)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"{firstClient.name} unfortunately has no money in his/her checking account.");
                Console.ResetColor();
                RepeatQuery(choiceTransaction);
            }
            // Sätter bool till false för att vi vill använda samma bool till nästa klient.
            foundClient = false;
            // gör en do While för att vi vill att användare ska mata in klient id tills programmet hittar en matchande klient.


            do
            {
                Console.Clear();
                Console.WriteLine($"Transferring funds from: {firstClient.id}\n\n");

                Console.Write("Please enter the id of the person you would like to transfer funds to: ");
                // Här kollar vi om inmatningen är ett nummer genom metoden CheckIfNumber.
                // Är det inte det, så skriver programmet ut att det inte är ett nummer samt att man ska mata in ett id igen.
                decimal secondId = CheckIfNumber(choiceId);
                Console.WriteLine();
                // letar igenom klient listan. Vi för över infomrationen från klienten vi är på till second client.
                // Om det inmatade id:t hittas i listan av klienter, sätter vi även bool foundclient till true.
                foreach (Client client in Client.clientList)
                {
                    if (secondId == client.id)
                    {
                        secondClient = client;
                        foundClient  = true;
                    }
                }
                // Hittar vi ingen klient med det inmatade id:t visar vi felmedd.
                if (!foundClient)
                {
                    Colours.Red("No such client was found\n");
                    ErrorMessage();
                }
            } while (!foundClient);

            Console.Clear();

            Console.Write($"Transferring funds from "); Colours.Red($"{firstClient.id} "); Console.Write("to ");
            Colours.Red($"{secondClient.id}\n\n\n");

            Console.WriteLine($"{firstClient.name} has {firstClient.checkingAccount.amount} kr in his/her Checking Account\n");

            Console.Write("Enter the amount of funds you would like to transfer: ");
            // kollar att det inmatade värdet är ett nummer och även om det är ett belopp genom argumentet ChoiceTrans.
            // Det returnerade värdet från CheckIfNumber stoppas sedan in i variabeln inputAmount.{firstClient.name} has
            inputAmount = CheckIfNumber(choiceTransaction);
            // Kollar så att summan man försöker föra över är godkänd enligt logiken i ValidateAmount.
            // Det returnerade värdet från ValidateAmount stoppas sedan in i variabeln inputAmount.
            inputAmount = ValidateAmount(choiceTransaction, firstClient, inputAmount);

            // Vill att överföringssumman inte ska vara mer än 2 decimaler och avrundar därmed input.
            inputAmount = (Math.Round(inputAmount, 2));

            // Om första klientens id inmatning matchar andra klientens id inmatning skickas pengarna från sitt egna
            // checkingAcc till sitt egna SavingsAcc.
            if (firstClient == secondClient)
            {
                // Skapar ett objekt av savingsAccount för att nedan komma åt interest metoden.
                SavingsAccount savingsAcc = new SavingsAccount();

                firstClient.checkingAccount.amount -= inputAmount;
                firstClient.savingsAccount.amount  += inputAmount;

                toAccountType = "Saving Account";
                Console.WriteLine($"{firstClient.name} transferred {inputAmount} from his/her checking account " +
                                  $"to his/her {toAccountType.ToLower()}.");

                if (firstClient.interestBonus == false)
                {
                    decimal interestBonus = firstClient.savingsAccount.amount * interest;
                    Console.WriteLine();
                    Console.BackgroundColor = ConsoleColor.Green;
                    Console.ForegroundColor = ConsoleColor.Black;
                    Console.WriteLine($"{firstClient.name} earned an interest bonus of {interestBonus.ToString("F2")} kr");
                    Console.ResetColor();

                    savingsAcc.Interest(firstClient);
                }
            }
            // Är första inmatningen av klientens id inte samma som den andra, skickas pengarna från first clients checkingAcc
            // till second clients checkingAcc.
            else
            {
                firstClient.checkingAccount.amount  -= inputAmount;
                secondClient.checkingAccount.amount += inputAmount;
                toAccountType = "Checking Account";
                Console.WriteLine($"{firstClient.name} transferred {inputAmount} to {secondClient.name}'s {toAccountType.ToLower()}.");
            }

            DateTime dateAndTime = DateTime.Now;
            // Vi skapar ett objekt av Transactions via konstruktorn i den klassen.
            Transactions trans = new Transactions(dateAndTime, inputAmount, choiceTransaction, toAccountType, firstClient, secondClient);

            // Lägger till den genomförda transaktionen i vår lista av transaktioner.
            transactionList.Add(trans);
            // använder ljudfilen ca-ching som ligger i projektet.
            player.SoundLocation = "ca-ching.wav";
            player.Play();

            Console.WriteLine();
            // frågar användaren om den vill göra en ny transaktion.
            RepeatQuery(choiceTransaction);
            Console.ReadKey();
        }