/// <summary>
 /// Ontkoppelen van Tafels met ID
 /// </summary>
 /// <param name="gereserveerdeTafels">Lijst met de tafels die al zijn gekoppeld aan de reservering</param>
 /// <param name="tijdEnDatum">De tijd en datum waarop de reservering plaatsvindt (string format)</param>
 /// <returns>Returns de vernieuwde lijst voor de reservering (als deze is aangepast)</returns>
 public List <Tafel> OntKoppelenMetID(List <Tafel> gereserveerdeTafels, string tijdEnDatum)
 {
     while (true)
     {
         Console.Clear();
         Console.WriteLine(ASCIIART.TafelsOntkoppelenArt());
         Console.WriteLine("Voer het ID van de tafel in die u wilt ontkoppelen\n\nKlik op 0 en klik enter om terug te gaan");
         string userInput = Console.ReadLine();
         if (userInput == "0")
         {
             return(gereserveerdeTafels);
         }
         bool tafelSuccesvolOntkoppeld = false;
         for (int j = 0; j < gereserveerdeTafels.Count; j++) //voor elke tafel die in de gereserveerdeTafels staat van de klant
         {
             if (gereserveerdeTafels[j].ID == userInput)
             {
                 for (int i = 0; i < gereserveerdeTafels[j].Gereserveerd.Count; i++) //voor elke datum die in Gereserveerd staat van de klant
                 {
                     if (gereserveerdeTafels[j].Gereserveerd[i] == tijdEnDatum)      //Als de tafel daadwerkelijk is gekoppeld voor dezelfde tijd
                     {
                         Console.Clear();
                         Console.WriteLine(ASCIIART.TafelsOntkoppelenArt());
                         Console.WriteLine($"{gereserveerdeTafels[j].ID} succesvol ontkoppeld van de reservering\n\nKlik op een toets om door te gaan");
                         gereserveerdeTafels[j].Gereserveerd.Remove(tijdEnDatum);
                         gereserveerdeTafels.Remove(gereserveerdeTafels[j]);
                         tafelSuccesvolOntkoppeld = true;
                         Console.ReadKey();
                         break;
                     }
                 }
             }
         }
         if (!tafelSuccesvolOntkoppeld) //Als de tafels niet succesvol zijn ontkoppeld
         {
             Console.Clear();
             Console.WriteLine(ASCIIART.TafelsOntkoppelenArt());
             Console.WriteLine($"Tafel {userInput} is niet gevonden voor deze reservering.\n\nKlik op een toets om terug te gaan");
             Console.ReadKey();
         }
     }
 }
        public void RemoveTafels(TafelArray tafels, bool klantCall = false) //klantCall is een variabele die op true wordt gezet als er vanuit een klant een reservering wordt verwijderd.
        {
            bool wrongInput = false;

            while (true)
            {
                if (klantCall)
                {
                    this.Tafels = tafels.AllesAutomatischOntkoppelen(this.Tafels, $"{this.Tijd}{this.Datum}", true);
                    return;
                }
                Console.Clear();
                Console.WriteLine(ASCIIART.TafelsOntkoppelenArt());
                Console.WriteLine("1: Alles ontkoppelen");
                Console.WriteLine("2: Ontkoppelen met tafel ID");
                Console.WriteLine("0: Terug");
                if (wrongInput)
                {
                    Console.WriteLine("Wrong input! Probeer 1, 2 of 0");
                }
                char userInput = Console.ReadKey().KeyChar;
                switch (userInput)
                {
                case '1':
                    this.Tafels = tafels.AllesAutomatischOntkoppelen(this.Tafels, $"{this.Tijd}{this.Datum}");
                    break;

                case '2':
                    this.Tafels = tafels.OntKoppelenMetID(this.Tafels, $"{this.Tijd}{this.Datum}");
                    break;

                case '0':
                    return;

                default:
                    wrongInput = true;
                    break;
                }
            }
        }
        /// <summary>
        /// Ontkoppeld automatisch tafels van een reservering
        /// </summary>
        /// <param name="gereserveerdeTafels">Lijst met de tafels die al zijn gekoppeld aan de reservering</param>
        /// <param name="tijdEnDatum">De tijd en datum waarop de reservering plaatsvindt (string format)</param>
        /// <param name="klantCall">Boolean die op true wordt gezet als er vanuit een klant een reservering wordt verwijderd.</param>
        /// <returns>Returns de vernieuwde lijst voor de reservering</returns>
        public List <Tafel> AllesAutomatischOntkoppelen(List <Tafel> gereserveerdeTafels, string tijdEnDatum, bool klantCall = false) //klantCall is een variabele die op true wordt gezet als er vanuit een klant een reservering wordt verwijderd.
        {
            while (true)
            {
                bool wrongInput = false;
                char userInput  = '6';
                Console.Clear();
                if (klantCall)
                {
                    userInput = '1';
                }
                else
                {
                    Console.WriteLine(ASCIIART.TafelsOntkoppelenArt());
                    Console.WriteLine($"alle tafels van de reservering worden automatisch ontkoppeld, weet u dit zeker?\n");
                    Console.WriteLine($"1: Ja\n");
                    Console.WriteLine($"0: Nee\n");
                    if (wrongInput)
                    {
                        Console.WriteLine("Wrong Input! Probeer 1 of 0");
                    }
                    userInput = Console.ReadKey().KeyChar;
                }
                switch (userInput)
                {
                case '1':
                    Console.Clear();
                    if (gereserveerdeTafels == null)
                    {
                        gereserveerdeTafels = new List <Tafel>();
                    }
                    foreach (Tafel tafel in Tafels)
                    {
                        if (tafel.Gereserveerd == null)
                        {
                            tafel.Gereserveerd = new List <string>();
                        }

                        for (int i = 0; i < tafel.Gereserveerd.Count; i++)
                        {
                            if (tafel.Gereserveerd[i] == tijdEnDatum)
                            {
                                tafel.Gereserveerd.Remove(tafel.Gereserveerd[i]);
                                if (!klantCall)     //Als een klant zijn reservering verwijderd hoeft deze print niet getoont te worden
                                {
                                    Console.WriteLine($"Tafel {tafel.ID} is ontkoppeld van de reservering");
                                }
                            }
                        }
                    }
                    gereserveerdeTafels.Clear();
                    SaveTafels(this);
                    if (klantCall)
                    {
                        return(gereserveerdeTafels);
                    }
                    Console.WriteLine("Toets op een knop om verder te gaan");
                    Console.ReadLine();
                    return(gereserveerdeTafels);

                case '0':
                    return(gereserveerdeTafels);

                default:
                    wrongInput = true;
                    break;
                }
            }
        }