Beispiel #1
0
        public decimal BerekenBedrag()
        {
            var prijs = 0m;

            if (BesteldGerecht != null)
            {
                prijs = BesteldGerecht.BerekenBedrag();
            }
            if (Drank != null)
            {
                prijs += Drank.BerekenBedrag();
            }
            if (Dessert != null)
            {
                prijs += Dessert.BerekenBedrag();
            }

            if (BesteldGerecht != null && Drank != null && Dessert != null)
            {
                prijs -= (prijs / 10);
            }

            prijs *= Aantal;

            return(prijs);
        }
Beispiel #2
0
        //public void lijstNagerechten(Dessert[] desserts)
        //{
        //    foreach (Dessert nagerecht in desserts)
        //    {
        //        nagerecht.Naam = Dessert.Naam;
        //        nagerecht.Prijs = Dessert.Prijs;
        //    }
        //}


        public Bestelling(BesteldGerecht besteldgerecht, Drank drank, Dessert dessert, int aantal, Klant klant = null)
        {
            this.Klant          = klant;
            this.BesteldGerecht = besteldgerecht;
            this.Drank          = drank;
            this.Dessert        = dessert;
            this.Aantal         = aantal;
        }
Beispiel #3
0
 public Bestelling(BesteldGerecht besteldgerecht = null, Drank drank = null, Dessert dessert = null, int aantal = 1, Klant klant = null)
 {
     Klant          = klant;
     BesteldGerecht = besteldgerecht;
     Drank          = drank;
     Dessert        = dessert;
     Aantal         = aantal;
 }
Beispiel #4
0
        public decimal BerekenBedrag()
        {
            decimal prijs   = 0.00m;
            decimal korting = 0.10m;

            prijs = BesteldGerecht != null?BesteldGerecht.BerekenBedrag() : 0;

            prijs += Drank != null?Drank.BerekenBedrag() : 0;

            prijs += Dessert != null?Dessert.BerekenBedrag() : 0;

            prijs = prijs * Aantal;

            if (BesteldGerecht != null && Drank != null && Dessert != null)
            {
                prijs = prijs * (1 - korting);
            }
            return(prijs);
        }
Beispiel #5
0
        public override string ToString()
        {
            var str = new StringBuilder();

            str.Append($"Klant: {Klant.Naam}");
            if (BesteldGerecht != null)
            {
                str.Append(Environment.NewLine + $"Gerecht: {BesteldGerecht.ToString()}");
            }
            if (Drank != null)
            {
                str.Append(Environment.NewLine + $"Drank: {Drank.ToString()}");
            }
            if (Dessert != null)
            {
                str.Append(Environment.NewLine + $"Dessert: {Dessert.ToString()}");
            }

            str.Append(Environment.NewLine + $"Aantal: {Aantal}");
            str.Append(Environment.NewLine + $"Bedrag van deze bestelling: {BerekenBedrag()} eur");

            return(str.ToString());
        }
Beispiel #6
0
        public string WegSchrijven()
        {
            var tekst = new StringBuilder();

            tekst.Append(Klant.KlantId + "#");
            if (BesteldGerecht != null)
            {
                tekst.Append(BesteldGerecht.WegSchrijven());
            }
            tekst.Append("#");
            if (Drank != null)
            {
                tekst.Append(Drank.WegSchrijven());
            }
            tekst.Append("#");
            if (Dessert != null)
            {
                tekst.Append(Dessert.WegSchrijven());
            }
            tekst.Append("#");
            tekst.Append(Aantal);

            return(tekst.ToString());
        }
        public static void Main(string[] args)
        {
            var               Bestellingen         = new LijstBestellingen().getBestellingen();
            var               Gerechten            = new LijstGerechten().getGerechten();
            var               Klanten              = new LijstKlanten().getKlanten();
            var               Desserts             = new LijstDesserts().getDesserts();
            var               Dranken              = new LijstDranken().getDranken();
            List <Gerecht>    dishes               = new List <Gerecht>();
            List <Dessert>    nagerechten          = new List <Dessert>();
            List <Extra>      supplementen         = new List <Extra>();
            List <Bestelling> BestellingenFromFile = new List <Bestelling>();

            // Lijst van alle bestellingen
            Console.WriteLine("Lijst van alle bestellingen:");

            foreach (var gerecht in Gerechten)
            {
                if (gerecht.Naam.ToUpper().StartsWith("PIZ"))
                {
                    Action <string, decimal, List <String> > pizza = (naam, prijs, onderdelen) => new Pizza(naam, prijs, onderdelen);
                }
                else
                {
                    Action <string, decimal, string> pasta = (naam, prijs, omschrijving) => new Pasta(naam, prijs, omschrijving);
                }
            }

            int teller = 1;

            foreach (var bestelling in Bestellingen)
            {
                Console.WriteLine($"Bestelling {teller}:");
                Console.WriteLine(bestelling);
                Console.WriteLine("************************************************");
                teller++;
            }

            Console.WriteLine();
            Console.ReadKey();

            // Lijst van bestellingen van Jan Janssen en het totaalbedrag ervan

            Console.WriteLine("Bestellingen van klant Jan Janssen:");
            Console.WriteLine();
            decimal eindtotaalJanJanssen = 0.0m;

            var bestellingenJanJanssen =
                from bestellingJanJanssen in Bestellingen
                where (bestellingJanJanssen.Klant.Naam == Klanten[0].Naam)
                select new
            {
                klantJanJanssen   = bestellingJanJanssen.Klant,
                gerechtJanJanssen = bestellingJanJanssen.BesteldGerecht,
                drankJanJanssen   = bestellingJanJanssen.Drank,
                dessertJanJanssen = bestellingJanJanssen.Dessert,
                aantalJanJanssen  = bestellingJanJanssen.Aantal,
                bedragJanJanssen  = bestellingJanJanssen.Bedrag
            };

            if (bestellingenJanJanssen != null)
            {
                foreach (var bestellingJanJanssen in bestellingenJanJanssen)
                {
                    if (bestellingJanJanssen.klantJanJanssen != null)
                    {
                        Console.WriteLine($"Klant: {bestellingJanJanssen.klantJanJanssen}");
                    }
                    if (bestellingJanJanssen.gerechtJanJanssen != null)
                    {
                        Console.WriteLine($"Gerecht: {bestellingJanJanssen.gerechtJanJanssen}");
                    }
                    if (bestellingJanJanssen.drankJanJanssen != null)
                    {
                        Console.WriteLine($"Drank: {bestellingJanJanssen.drankJanJanssen}");
                    }
                    if (bestellingJanJanssen.dessertJanJanssen != null)
                    {
                        Console.WriteLine($"Dessert: {bestellingJanJanssen.dessertJanJanssen}");
                    }
                    Console.WriteLine($"Aantal: {bestellingJanJanssen.aantalJanJanssen}");
                    Console.WriteLine($"Bedrag van deze bestelling: {bestellingJanJanssen.bedragJanJanssen} euro");
                    Console.WriteLine();
                    eindtotaalJanJanssen += bestellingJanJanssen.bedragJanJanssen;
                }
                Console.WriteLine($"Het totaal bedrag van alle bestellingen van klant Jan Janssen: {eindtotaalJanJanssen} euro");
                Console.ReadKey();
            }

            // Alle bestellingen, gegroepeerd per klant.
            // Voor de bekende klanten: totaalbedrag van alle bestellingen tonen.

            Console.WriteLine();
            Console.WriteLine("Bestellingen gegroepeerd per klant");
            Console.WriteLine("+ totaalbedrag van alle bestellingen voor de bekende klanten");
            Console.WriteLine();
            decimal eindtotaalPerKlant = 0.0m;

            var bestellingenPerKlant =
                from order in Bestellingen
                group order by order.Klant;

            foreach (var perKlant in bestellingenPerKlant)
            {
                foreach (var bekendeKlant in perKlant)
                {
                    if (bekendeKlant.Klant.Naam != "Onbekende klant")
                    {
                        Console.WriteLine($"Bestellingen van {bekendeKlant.Klant.Naam}");
                        Console.WriteLine();
                        Console.WriteLine($"Klant: {bekendeKlant.Klant.Naam}");
                        if (bekendeKlant.BesteldGerecht != null)
                        {
                            Console.WriteLine($"Gerecht: {bekendeKlant.BesteldGerecht}");
                        }
                        if (bekendeKlant.Drank != null)
                        {
                            Console.WriteLine($"Drank: {bekendeKlant.Drank}");
                        }
                        if (bekendeKlant.Dessert != null)
                        {
                            Console.WriteLine($"Dessert: {bekendeKlant.Dessert}");
                        }
                        Console.WriteLine($"Aantal: {bekendeKlant.Aantal}");
                        Console.WriteLine($"Bedrag van deze bestelling: {bekendeKlant.Bedrag} euro");
                        Console.WriteLine();
                        eindtotaalPerKlant += bekendeKlant.Bedrag;
                    }
                    else
                    {
                        Console.WriteLine("Onbekende klanten:");
                        Console.WriteLine();
                        Console.WriteLine($"Klant: {bekendeKlant.Klant.Naam}");
                        if (bekendeKlant.BesteldGerecht != null)
                        {
                            Console.WriteLine($"Gerecht: {bekendeKlant.BesteldGerecht}");
                        }
                        if (bekendeKlant.Drank != null)
                        {
                            Console.WriteLine($"Drank: {bekendeKlant.Drank}");
                        }
                        if (bekendeKlant.Dessert != null)
                        {
                            Console.WriteLine($"Dessert: {bekendeKlant.Dessert}");
                        }
                        Console.WriteLine($"Aantal: {bekendeKlant.Aantal}");
                        Console.WriteLine($"Bedrag van deze bestelling: {bekendeKlant.Bedrag} euro");
                        Console.WriteLine();
                    }
                }
                if (eindtotaalPerKlant != 0)
                {
                    Console.WriteLine($"Het totaal bedrag van alle bestellingen van klant {perKlant.Key}: {eindtotaalPerKlant} euro");
                    Console.WriteLine();
                    eindtotaalPerKlant = 0;
                }
                Console.WriteLine("***********************************************");
                Console.WriteLine();
                Console.ReadKey();
            }

            // DEEL 2

            string directorynaam = @"C:\Data\";

            try
            {
                // wegschrijven klanten

                using (var schrijver = new StreamWriter(directorynaam + "klanten.txt", false))
                {
                    foreach (var client in Klanten)
                    {
                        schrijver.WriteLine(client.OpslaanKlanten());
                    }
                }
            }
            catch (IOException)
            {
                Console.WriteLine("Fout bij het wegschrijven van de klanten");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            try
            {
                // wegschrijven gerechten

                using (var schrijver = new StreamWriter(directorynaam + "gerechten.txt", false))
                {
                    var gerechtenDistinct =
                        (from dish in Gerechten select dish).Distinct();

                    foreach (var dish in gerechtenDistinct)
                    {
                        schrijver.WriteLine(dish.opslaanGerecht());
                    }
                }
            }
            catch (IOException)
            {
                Console.WriteLine("Fout bij het wegschrijven van de gerechten");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            try
            {
                // wegschrijven bestellingen

                using (var schrijver = new StreamWriter(directorynaam + "bestellingen.txt", false))
                {
                    foreach (var order in Bestellingen)
                    {
                        schrijver.WriteLine(order.opslaanBestelling());
                    }
                }
            }
            catch (IOException)
            {
                Console.WriteLine("Fout bij het wegschrijven van de bestellingen");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            try
            {
                // klanten inlezen
                Console.WriteLine("Klanten inlezen");
                List <Klant> klantenlijst = new List <Klant>();

                string klantRegel;
                int    klantNr;
                string klantNaam;

                using (var lezer = new StreamReader(directorynaam + "klanten.txt"))
                {
                    while ((klantRegel = lezer.ReadLine()) != null)
                    {
                        string[] data = klantRegel.Split(new Char[] { '#' });

                        klantNr   = int.Parse(data[0]);
                        klantNaam = data[1];

                        klantenlijst.Add(
                            new Klant
                        {
                            KlantID = klantNr,
                            Naam    = klantNaam
                        });
                    }
                }
            }
            catch (IOException)
            {
                Console.WriteLine("Fout bij het lezen van het klantenbestand");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            try
            {
                // gerechten inlezen
                Console.WriteLine("Gerechten inlezen");
                string  gerechtType;
                string  gerechtNaam;
                decimal gerechtPrijs;

                string gerechtRegel;

                using (var lezer = new StreamReader(directorynaam + "gerechten.txt"))
                {
                    while ((gerechtRegel = lezer.ReadLine()) != null)
                    {
                        string[] data = gerechtRegel.Split(new Char[] { '#' });

                        gerechtType  = data[0];
                        gerechtNaam  = data[1];
                        gerechtPrijs = decimal.Parse(data[2]);
                        if (gerechtType.ToUpper() != "PIZZA")
                        {
                            dishes.Add(new Pasta(data[1], decimal.Parse(data[2]), data[3]));
                        }
                        else
                        {
                            List <string> gerechtOnderdelen = new List <string>();
                            if (gerechtRegel.IndexOf("#") > 2)
                            {
                                foreach (string ingrediënt in data)
                                {
                                    gerechtOnderdelen.Add(ingrediënt);
                                }
                            }
                            dishes.Add(new Pizza(data[1], decimal.Parse(data[2]), gerechtOnderdelen));
                        }
                    }
                }
            }
            catch (IOException)
            {
                Console.WriteLine("Fout bij het lezen van het gerechtenbestand");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            try
            {
                // bestellingen inlezen
                Console.WriteLine("Bestellingen inlezen");

                Klant          client = null;
                string         bestelRegel;
                string         naamGerecht;
                Grootte        afmeting;
                BesteldGerecht besteldgerecht = null;
                Dessert        nagerecht      = null;
                List <Klant>   clientList     = new List <Klant>();
                Drank          consumptie     = null;

                using (var lezer = new StreamReader(directorynaam + "bestellingen.txt"))
                {
                    while ((bestelRegel = lezer.ReadLine()) != null)
                    {
                        // klant
                        string[] data = bestelRegel.Split(new Char[] { '#' });

                        int klantNr = int.Parse(data[0]);
                        besteldgerecht = null;

                        client = new Klant(0, "Onbekende klant");

                        var gevondenKlant = Klanten.Where(k => k.KlantID == klantNr).FirstOrDefault();

                        if (gevondenKlant != null)
                        {
                            client.KlantID = gevondenKlant.KlantID;
                            client.Naam    = gevondenKlant.Naam;
                        }

                        //foreach (var klant in Klanten)
                        //{
                        //    klantNr = klant.KlantID;
                        //    client = klant;
                        //    if (klantNr != 0)
                        //    {
                        //        client.Naam = klant.Naam;
                        //    }
                        //    else
                        //    {
                        //        client = new Klant(0, "Onbekende klant");
                        //    }

                        //}

                        // gerecht
                        afmeting = Grootte.Klein;
                        if (data[1].Length > 0)

                        {
                            // gerecht naam
                            string[] besteldGerechtData = data[1].Split(new Char[] { '-' });
                            naamGerecht = besteldGerechtData[0];

                            Gerecht gekozenDish = dishes.Where(d => d.Naam == naamGerecht).First();

                            // gerecht afmeting
                            afmeting = (Enum.Grootte)System.Enum.Parse(typeof(Grootte), besteldGerechtData[1]);


                            // gerecht extra's
                            var supplement = new List <Extra>();
                            if (Convert.ToInt32(besteldGerechtData[2]) != 0)
                            {
                                for (int tel = 1; tel <= Convert.ToInt32(besteldGerechtData[2]); tel++)
                                {
                                    Extra toebehoren = (Extra)System.Enum.Parse(typeof(Extra), besteldGerechtData[tel + 2]);
                                    supplement.Add(toebehoren);
                                }
                            }
                            besteldgerecht = new BesteldGerecht(gekozenDish, afmeting, supplement);
                        }

                        //foreach (var dish in dishes)
                        //{
                        //    naamGerecht = dish.Naam;
                        //    decimal prijs = dish.Prijs;
                        //    besteldgerecht = new BesteldGerecht(dish, afmeting, supplement);
                        //}

                        // dranken

                        if (data[2] != null)
                        {
                            var drankData = data[2].Split(new Char[] { '-' });
                            if (drankData[0] == "F")
                            {
                                consumptie = new Frisdrank((Enum.Drank)System.Enum.Parse(typeof(Enum.Drank), drankData[1]));
                            }
                            else if (drankData[0] == "W")
                            {
                                consumptie = new Warmedrank((Enum.Drank)System.Enum.Parse(typeof(Enum.Drank), drankData[1]));
                            }
                            else
                            {
                                consumptie = null;
                            }
                        }

                        // nagerecht

                        if (data[3].Length > 0)
                        {
                            nagerecht = new Dessert((Enum.Dessert)System.Enum.Parse(typeof(Enum.Dessert), data[3]));
                        }
                        else
                        {
                            nagerecht = null;
                        }

                        // aantal ==> data[4]

                        Bestelling order = new Bestelling(besteldgerecht, consumptie, nagerecht, int.Parse(data[4]), client);

                        BestellingenFromFile.Add(order);
                    }
                }
            }
            catch (IOException)
            {
                Console.WriteLine("Fout bij inlezen bestellingen");
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            foreach (var order in BestellingenFromFile)
            {
                Console.WriteLine(order.ToString());
                Console.WriteLine("-----------------------");
            }
        }
Beispiel #8
0
        static void Main(string[] args)
        {
            List <Gerecht>        gerechten         = null;
            List <Klant>          klanten           = null;
            List <Drank>          dranken           = null;
            List <BesteldGerecht> besteldeGerechten = null;
            List <Bestelling>     bestellingen      = null;
            List <Dessert>        desserts          = null;


            try
            {
                //Lijsten
                gerechten = new List <Gerecht>
                {
                    new Pizza("Pizza Margherita", 8m, new List <string> {
                        "Tomatensaus", "Mozzarella"
                    }),                                                                                                   //0
                    new Pizza("Pizza Napoli", 10m, new List <string> {
                        "Tomatensaus", "Mozzarella", "Ansjovis", "Kappers", "Olijven"
                    }),                                                                                                                                  //1
                    new Pizza("Pizza Lardiera", 9.50m, new List <string> {
                        "Tomatensaus", "Mozzarella", "Spek"
                    }),                                                                                                            //2
                    new Pizza("Pizza Vegetariana", 9.50m, new List <string> {
                        "Tomatensaus", "Mozzarella", "Groenten"
                    }),                                                                          //3
                    new Pasta("Spaghetti Bolognese", 12m, "met gehaktsaus"),                     //4
                    new Pasta("Spaghetti Carbonara", 13m, "spek, roomsaus en parmezaanse kaas"), //5
                    new Pasta("Penne Arrabbiata", 14m, "met pittige tomatensaus"),               //6
                    new Pasta("Lasagne", 15m)                                                    //7
                };
                klanten = new List <Klant>
                {
                    new Klant(1, "Jan Janssen"),                    //0
                    new Klant(2, "Piet Peeters")                    //1
                };
                dranken = new List <Drank>
                {
                    new Frisdrank(Enum.Drank.Water),                    //0
                    new Frisdrank(Enum.Drank.Limonade),                 //1
                    new Frisdrank(Enum.Drank.CocaCola),                 //2
                    new Warmedrank(Enum.Drank.Koffie),                  //3
                    new Warmedrank(Enum.Drank.Thee)                     //4
                };
                desserts = new List <Dessert>
                {
                    new Dessert(Enum.Dessert.Cake),
                    new Dessert(Enum.Dessert.Ijs),
                    new Dessert(Enum.Dessert.Tiramisu)
                };
                besteldeGerechten = new List <BesteldGerecht>
                {
                    new BesteldGerecht(gerechten[0], Grootte.Groot, new List <Extra> {
                        Extra.Kaas, Extra.Look
                    }),                                                   //0
                    new BesteldGerecht(gerechten[0]),                     //1
                    new BesteldGerecht(gerechten[1], Grootte.Groot),      //2
                    new BesteldGerecht(gerechten[7], Grootte.Klein, new List <Extra> {
                        Extra.Look
                    }),                                                   //3
                    new BesteldGerecht(gerechten[5]),                     //4
                    new BesteldGerecht(gerechten[4], Grootte.Groot, new List <Extra> {
                        Extra.Kaas
                    }),                                                                                              //5
                };
                bestellingen = new List <Bestelling>
                {
                    new Bestelling(besteldeGerechten[0], dranken[0], desserts[1], 2, klanten[0]),
                    new Bestelling(besteldeGerechten[1], dranken[0], desserts[2], 1, klanten[1]),
                    new Bestelling(besteldeGerechten[2], dranken[4], desserts[1], 1, klanten[1]),
                    new Bestelling(besteldeGerechten[3]),
                    new Bestelling(besteldeGerechten[4], dranken[2], klant: klanten[0]),
                    new Bestelling(besteldeGerechten[5], dranken[2], desserts[0], 1, klanten[1]),
                    new Bestelling(drank: dranken[3], aantal: 3, klant: klanten[1]),
                    new Bestelling(dessert: desserts[2], klant: klanten[0])
                };

                Console.WriteLine("1. Alle bestellingen");
                LijnTrekker.TrekLijn();
                //Alle Bestellingen
                var bestellingNr = 1;
                foreach (var gerecht in bestellingen)
                {
                    Console.WriteLine($"Bestelling: {bestellingNr++}");
                    Console.WriteLine(gerecht);
                    LijnTrekker.TrekLijn();
                }

                //Alle bestellingen van Jan Janssen
                Clear("bestellingen van Jan Janssen");
                var bestellingenJan = from bestelling in bestellingen
                                      where bestelling.Klant.Naam == klanten[0].Naam
                                      select bestelling;



                Console.WriteLine("2. Alle bestellingen van Jan Janssen");
                LijnTrekker.TrekLijn();

                Console.WriteLine($"Bestellingen van klant {klanten[0].Naam}\n");
                foreach (var bestelling in bestellingenJan)
                {
                    Console.WriteLine(bestelling);
                    Console.WriteLine();
                }
                var totaalBedrag = bestellingenJan.Sum(t => t.BerekenBedrag());
                Console.WriteLine($"Het totaal bedrag van alle bestelingen van klant {klanten[0].Naam}: {totaalBedrag} euro");
                LijnTrekker.TrekLijn();

                Clear("bestellingen gegroepeerd per klant");

                //Alle bestellingen gesorteerd per klant
                Console.WriteLine("3. Alle bestellingen gegroepeerd per klant");
                LijnTrekker.TrekLijn();

                var bestellingenPerKlant = from bestelling in bestellingen
                                           group bestelling by bestelling.Klant.Naam;

                foreach (var klant in bestellingenPerKlant)
                {
                    if (klant.Key != "Onbekende Klant")
                    {
                        Console.WriteLine($"Bestellingen van klant {klant.Key}:\n");
                    }
                    else
                    {
                        Console.WriteLine($"{klant.Key}en:\n");
                    }

                    foreach (var bestelling in klant)
                    {
                        Console.WriteLine(bestelling);
                        Console.WriteLine();
                    }
                    totaalBedrag = klant.Sum(t => t.BerekenBedrag());
                    if (klant.Key != "Onbekende Klant")
                    {
                        Console.WriteLine($"Het totaal bedrag van alle bestelingen van klant {klant.Key}: {totaalBedrag} euro");
                    }

                    LijnTrekker.TrekLijn();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Clear("ingelezen gegevens");
            Console.WriteLine("4. Alle ingelezen gegevens");
            LijnTrekker.TrekLijn();


            string locatie = @"C:\Data\";

            //WegSchrijven
            try
            {
                using (var schrijver = new StreamWriter(locatie + "Klanten.txt"))
                {
                    foreach (var klant in klanten)
                    {
                        schrijver.WriteLine(klant.WegSchrijven());
                    }
                }
                using (var schrijver = new StreamWriter(locatie + "Gerechten.txt"))
                {
                    foreach (var gerecht in gerechten)
                    {
                        schrijver.WriteLine(gerecht.WegSchrijven());
                    }
                }
                using (var schrijver = new StreamWriter(locatie + "Bestellingen.txt"))
                {
                    foreach (var bestelling in bestellingen)
                    {
                        schrijver.WriteLine(bestelling.WegSchrijven());
                    }
                }
            }
            catch (IOException)
            {
                Console.WriteLine("Fout bij het schrijven naar het bestand");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //Inlezen
            try
            {
                bestellingen = new List <Bestelling>();
                gerechten    = new List <Gerecht>();
                klanten      = new List <Klant>();
                List <Extra> extras;
                Bestelling   bestelling;
                Gerecht      gerecht;
                Drank        drank;
                Dessert      dessert;
                Klant        klant;
                string       regel;

                using (var lezer = new StreamReader(locatie + "Klanten.txt"))
                {
                    while ((regel = lezer.ReadLine()) != null)
                    {
                        string[] klantgegevens = regel.Split('#');
                        var      klantId       = int.Parse(klantgegevens[0]);
                        var      klantnaam     = klantgegevens[1];
                        klant = new Klant(klantId, klantnaam);
                        klanten.Add(klant);
                    }
                }
                using (var lezer = new StreamReader(locatie + "Gerechten.txt"))
                {
                    while ((regel = lezer.ReadLine()) != null)
                    {
                        string[] gerechtGegevens = regel.Split('#');
                        var      naam            = gerechtGegevens[1];
                        var      prijs           = decimal.Parse(gerechtGegevens[2]);
                        var      onderdelen      = new List <string>();

                        if (gerechtGegevens[0] == "pizza")
                        {
                            int aantalOnderdelen = gerechtGegevens.Length - 3;
                            for (int i = 3; i < aantalOnderdelen + 3; i++)
                            {
                                onderdelen.Add(gerechtGegevens[i]);
                            }
                            var pizza = new Pizza(naam, prijs, onderdelen);
                            gerechten.Add(pizza);
                        }
                        else if (gerechtGegevens[0] == "pasta")
                        {
                            if (gerechtGegevens[3] != null)
                            {
                                var omschrijving = gerechtGegevens[3];
                                var pasta        = new Pasta(naam, prijs, omschrijving);
                                gerechten.Add(pasta);
                            }
                            else
                            {
                                var pasta = new Pasta(naam, prijs);
                                gerechten.Add(pasta);
                            }
                        }
                    }
                }
                using (var lezer = new StreamReader(locatie + "Bestellingen.txt"))
                {
                    while ((regel = lezer.ReadLine()) != null)
                    {
                        BesteldGerecht besteldgerecht = null;
                        gerecht = null;
                        extras  = null;
                        drank   = null;
                        dessert = null;

                        string[] bestellingGegevens = regel.Split('#');

                        var klantId = int.Parse(bestellingGegevens[0]);
                        klant = klanten.Find(item => item.KlantId == klantId);

                        if (bestellingGegevens[1] != "")
                        {
                            string[] arrBesteldgerecht = bestellingGegevens[1].Split('-');
                            if (arrBesteldgerecht[0] != "")
                            {
                                gerecht = gerechten.Find(item => item.Naam == arrBesteldgerecht[0]);
                            }

                            Grootte grootte = (Grootte)System.Enum.Parse(typeof(Grootte), arrBesteldgerecht[1]);

                            int aantalExtras = int.Parse(arrBesteldgerecht[2]);
                            if (aantalExtras != 0)
                            {
                                extras = new List <Extra>();
                                for (int i = 0; i < aantalExtras; i++)
                                {
                                    Extra extra = (Extra)System.Enum.Parse(typeof(Extra), arrBesteldgerecht[i + 3]);
                                    extras.Add(extra);
                                }
                            }
                            besteldgerecht = new BesteldGerecht(gerecht, grootte, extras);
                        }
                        if (bestellingGegevens[2] != "")
                        {
                            string[] arrDranken = bestellingGegevens[2].Split('-');
                            var      drankNaam  = (Enum.Drank)System.Enum.Parse(typeof(Enum.Drank), arrDranken[1]);
                            if (arrDranken[0] == "F")
                            {
                                drank = new Frisdrank(drankNaam);
                            }
                            else
                            {
                                drank = new Warmedrank(drankNaam);
                            }
                        }

                        if (bestellingGegevens[3] != "")
                        {
                            var dessertNaam = (Enum.Dessert)System.Enum.Parse(typeof(Enum.Dessert), bestellingGegevens[3]);
                            dessert = new Dessert(dessertNaam);
                        }

                        bestelling = new Bestelling(besteldgerecht, drank, dessert, int.Parse(bestellingGegevens[4]), klant);
                        bestellingen.Add(bestelling);
                    }
                }

                /*
                 * Console.WriteLine("Gerechten:\n");
                 * for (int i = 0; i < gerechten.Count; i++)
                 * {
                 *      Console.WriteLine(gerechten[i]);
                 * }
                 * LijnTrekker.TrekLijn();
                 */
                /*
                 * Console.WriteLine("Klanten:\n");
                 * for (int i = 0; i < klanten.Count; i++)
                 * {
                 *      Console.WriteLine(klanten[i]);
                 * }
                 * LijnTrekker.TrekLijn();
                 */


                for (int i = 0; i < bestellingen.Count; i++)
                {
                    Console.WriteLine(bestellingen[i]);
                    LijnTrekker.TrekLijn();
                }
            }
            catch (IOException)
            {
                Console.WriteLine("Fout bij het lezen van het bestand");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }