# **Code migration 14.11** ``` -Migrated code with main fetch method. ``` **Implemented fetch method.** 1. - [x] -The fetch method now loads the file.txt, if the file dosn't excist, it makes a new one. Loads pre- setted data. 1. - [x] -Registration CheckMatch from file.txt, if match is false, registartion goes fordward and push True status to main method. ``` namespace Registration { internal class Program { static void Main(string[] args) { var test = new Registration(); //registration comes with a true if registration ok. Console.WriteLine(test.Register()); Console.ReadLine(); } public class Registration { public bool Register() { Console.WriteLine("Rekisteröityminen"); Console.WriteLine(); var fetch = new RetrieveData(); fetch.Retriver(); string dir = "c:\\temp\\"; string fileName = "UserData.txt"; //fetch data string[,] userData = RetrieveData.FetchData(dir, fileName); //Registration loop bool RegistrationLoop = false; while (RegistrationLoop != true) { string Username, Password, Name, Surname, Height; int row = -1; Console.Write("Käyttäjätunnus: "); Username = Console.ReadLine(); if (MatchUser(userData, Username) == true) { Console.WriteLine("Käyttäjätunnus on käytössä. \nValitse uusi."); Console.WriteLine(); } else if (MatchUser(userData, Username) != true) { Console.Write("Salasana: "); Password = Console.ReadLine(); Console.Write("Nimi: "); Name = Console.ReadLine(); Console.Write("Sukunimi: "); Surname = Console.ReadLine(); Console.Write("Pituus: "); Height = Console.ReadLine(); //wrtites new user string register = Username + ";" + Password + ";" + "0" + ";" + Name + " " + Surname + ";" + Height + "\n"; File.AppendAllText(dir + fileName, register); RegistrationLoop = true; } } return true; } } //MatchUser check, checks if users already on Userdata.txt static bool MatchUser(string[,] Userdata, string username) { for (int i = 0; i < Userdata.GetLength(0); i++) { for (int j = 0; j < Userdata.GetLength(1); j++) { if (Userdata[i, j] != null && Userdata[i, j].Equals(username)) { return true; } } } return false; } } //fetchdata internal class RetrieveData { public void Retriver() { // Luodaan kansio ja testitiedosto txt muodossa. string dir = "c:\\temp\\"; string fileName = "UserData.txt"; Directory.CreateDirectory(dir); //Testisisältö luo tiedoston jos tiedostoa ei ole olemassa. Huomaa huutomerkki. if (!File.Exists(dir + fileName)) { string input1 = "username;password;locked;full name;height" + "\n"; string input2 = "Turtles;pizza1337;0;Jone Nikula;197" + "\n"; string input3 = "BurgerKing;Wh00p;0;Marko Hietala;175"; // Rivien määrän verran lisäyksiä. File.AppendAllText(dir + fileName, input1); File.AppendAllText(dir + fileName, input2); File.AppendAllText(dir + fileName, input3); } // Fetchdata metodilla tietojen hakeminen kaksiulotteiseen taulukkoon. // Metodi ottaa parametreiksi tiedoston sijainnin, tiedoston nimen, taulukon sarakkeiden ja rivien lukumäärän. string[,] userData = FetchData(dir, fileName); // Taulukon sisällön tulostus. for (int i = 0; i < userData.GetLength(0); i++) { for (int j = 0; j < userData.GetLength(1); j++) { Console.Write(userData[i, j] + " "); } Console.Write("\n"); } } public static string[,] FetchData(string dir, string fileName) { // Rivit taulukoksi. Saadaan rivien määrä. string[] dataStream = File.ReadAllLines(dir + fileName).ToArray(); // Otetaan talteen sarakkeiden määrä. string[] columns = dataStream[0].Split(';'); // Alustetaan palautettava lista. string[,] resultData = new string[dataStream.Length - 1, columns.Length]; // Laskin lähtee 1.stä. Jätetään ensimmäinen rivi kirjoittamatta. // Lisätään tiedoston sisältö eroteltuna kasiulotteiseen listaan. for (int i = 1; i < dataStream.Length; i++) { string[] splitStream = dataStream[i].Split(';'); for (int j = 0; j < columns.Length; j++) { // resultDataan halutaan kirjoittaa 0 riviltä lähtien. resultData[i - 1, j] = splitStream[j]; } } return resultData; } } } ```