---
# System prepended metadata

title: '**Code migration 14.11**'

---

# **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;
        }
    }






}


```