// Vi har olika konstruktorer för olika syften. // Denna konstruktorn används för att skapa klientobjekten. public Client(string aName, int aId, DateTime aCreationDate, CheckingAccount aCheckingsAccount, SavingsAccount aSavingsAccount) { name = aName; id = aId; creationDate = aCreationDate; checkingAccount = aCheckingsAccount; savingsAccount = aSavingsAccount; }
//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(); }
// 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(); }