/// <summary>
        /// Checkt of de gegeven gebruikersnaam bestaat voor de gegeven gebruikerType
        /// Checkt of het wachtwoord bij de gebruikersnaam hoort
        /// Logt de gebruiker in
        /// </summary>
        /// <param name="gebruikerType">Welk soort gebruiker (klant,medewerker,eigenaar)</param>
        /// <returns>De ingelogde gebruiker</returns>
        public Gebruiker logIn(string gebruikerType)
        {
            Func <Gebruiker, Tuple <bool, string> > CheckWachtwoord = (gebruikerObject) =>
            {
                SecureString pass  = VarComponents.MaskStringInput();
                string       Input = new System.Net.NetworkCredential(string.Empty, pass).Password;
                return(Tuple.Create(Input == gebruikerObject.Wachtwoord || Input == "0", Input));
            };

            while (true)
            {
                bool       NaamBestaat      = false;
                Klant      klantObject      = null;
                Medewerker medewerkerObject = null;
                Eigenaar   eigenaarObject   = null;

                Console.Clear();
                Console.WriteLine(ASCIIART.LoginArt());
                Console.WriteLine("Voer uw gebruikersnaam in\x0A\x0A" + "0: Terug");
                string GegevenNaam = Console.ReadLine();
                if (GegevenNaam == "0")
                {
                    return(new Gebruiker("", "", "", ""));
                }

                if (gebruikerType == "Klant")
                {
                    foreach (Klant klant in Klanten)
                    {
                        if (GegevenNaam == klant.Naam)
                        {
                            NaamBestaat = true;
                            klantObject = klant;
                        }
                    }
                }
                else if (gebruikerType == "Medewerker")
                {
                    foreach (Medewerker medewerker in Medewerkers)
                    {
                        if (GegevenNaam == medewerker.Naam)
                        {
                            NaamBestaat      = true;
                            medewerkerObject = medewerker;
                        }
                    }
                }
                else
                {
                    if (GegevenNaam == Eigenaar.Naam)
                    {
                        NaamBestaat    = true;
                        eigenaarObject = Eigenaar;
                    }
                }
                if (NaamBestaat)
                {
                    Tuple <bool, string> Password = Tuple.Create(false, "");
                    Console.Clear();
                    Console.WriteLine(ASCIIART.LoginArt());
                    Console.WriteLine($"Gebruikersnaam: {GegevenNaam}\x0A\x0AVoer uw wachtwoord in:");
                    if (gebruikerType == "Klant")
                    {
                        Password = CheckWachtwoord(klantObject);
                    }
                    else if (gebruikerType == "Medewerker")
                    {
                        Password = CheckWachtwoord(medewerkerObject);
                    }
                    else
                    {
                        Password = CheckWachtwoord(eigenaarObject);
                    }
                    while (!Password.Item1)
                    {
                        Console.Clear();
                        Console.WriteLine(ASCIIART.LoginArt());
                        Console.WriteLine("Verkeerd wachtwoord\x0A\x0A\x0AVoer uw wachtwoord in:\x0A\x0A" + "0: Terug");
                        if (klantObject != null)
                        {
                            Password = CheckWachtwoord(klantObject);
                        }
                        else
                        {
                            Password = CheckWachtwoord(medewerkerObject);
                        }
                    }
                    if (Password.Item2 != "0")
                    {
                        Console.Clear();
                        Console.WriteLine(ASCIIART.LoginArt());
                        Console.WriteLine("U bent ingelogd!\x0A\x0A" + "0: Naar het startscherm");
                        Console.ReadKey();
                        if (klantObject != null)
                        {
                            return(klantObject);
                        }
                        else if (medewerkerObject != null)
                        {
                            return(medewerkerObject);
                        }
                        else
                        {
                            return(eigenaarObject);
                        }
                    }
                }
                else
                {
                    Console.Clear();
                    Console.WriteLine(ASCIIART.LoginArt());
                    Console.WriteLine("Verkeerde gebruikersnaam.\x0A\x0A" + "Enter: Probeer opnieuw in te loggen\x0A\x0A" + "0: Terug");
                    if (Console.ReadKey().KeyChar == '0')
                    {
                        return(new Gebruiker("", "", "", ""));
                    }
                }
            }
        }
        }                       //Empty constructor for json deserialisen.

        public Gebruiker accountManager(Gebruiker gebruiker)
        {
            bool verkeerdeInput = false;

            while (true)
            {
                Console.Clear();
                Console.WriteLine(ASCIIART.LoginArt());
                Console.WriteLine("1: Login als klant\x0a");
                Console.WriteLine("2: Login als medewerker\n");
                Console.WriteLine("3: Login als eigenaar\n");
                Console.WriteLine("4: Registreer een nieuw account als klant\x0a");
                Console.WriteLine("0: Terug\x0a");

                if (verkeerdeInput)
                {
                    Console.WriteLine("Verkeerde input, probeer 1,2,3, 4 of 0");
                }

                ConsoleKeyInfo userInput     = Console.ReadKey();
                char           userInputChar = userInput.KeyChar;
                switch (userInputChar)
                {
                case '1':
                    gebruiker = logIn("Klant");    //return logIn();
                    if (gebruiker as Klant != null)
                    {
                        return(gebruiker);
                    }
                    break;

                case '2':
                    gebruiker = logIn("Medewerker");
                    if (gebruiker as Medewerker != null)
                    {
                        return(gebruiker);
                    }
                    break;

                case '3':
                    gebruiker = logIn("Eigenaar");
                    if (gebruiker as Eigenaar != null)
                    {
                        return(gebruiker);
                    }
                    break;

                case '4':
                    gebruiker = registreerKlant(gebruiker);
                    if (gebruiker as Klant != null)
                    {
                        return(gebruiker);
                    }
                    break;

                case '0':
                    return(gebruiker);

                default:
                    verkeerdeInput = true;
                    break;
                }
            }
        }