public ActionResult MenuToReservering(ViewModels.ReserveringViewModel model)
        {
            if (ModelState.IsValid)
            {
                //voordat een reservering komt in de database te staan
                //moeten we eerst checken of er genoeg beschikbare stoelen zijn
                //voor de gekozen datum en tijd
                _available = CheckSeatAvailability(model);
                if (!_available)
                {
                    //een foutmelding is teruggestuurd, kan mooier
                    TempData["ErrorMessage"] = "Helaas zijn wij volgeboekt op de door uw gekozen datum en tijd !";
                    return(RedirectToAction("Index"));
                }

                Reservering reservering  = db.Reserverings.Find(model.Reservering.Id);
                List <Menu> orderedMenus = reservering.BesteldeMenus.ToList();

                //checken of de menu al besteld is
                //zo niet, maken we een nieuwe couvert aan
                Menu existingMenu = orderedMenus.Where(m => m.Id == model.Menu.Id).FirstOrDefault();
                if (existingMenu == null)
                {
                    Menu menu = db.Menus.Find(model.Menu.Id);

                    Couverts cv = new Couverts
                    {
                        Menu        = menu,
                        Aantal      = model.Total,
                        Reservering = reservering
                    };

                    reservering.BesteldeMenus.Add(menu);
                    db.Couverts.Add(cv);
                    db.Entry(reservering).State = EntityState.Modified;
                    db.SaveChanges();
                }
                //als de menu al besteld is met deze reservering
                //geven we alleen een nieuwe aantal aan
                //Ik heb voor deze manier gekozen omdat het eenvoudiger is om
                //een nieuw aantal aan te geven ipv toe te voegen of weg te halen.
                else
                {
                    var cou = db.Couverts.Where(c => c.Menu.Id == existingMenu.Id).FirstOrDefault();
                    if (cou != null)
                    {
                        cou.Aantal          = model.Total;
                        db.Entry(cou).State = EntityState.Modified;

                        db.SaveChanges();
                    }
                }
                return(RedirectToAction("Index"));
            }
            return(RedirectToAction("Index"));
        }
        public ActionResult GetInfoForDate(int?id)
        {
            Couverts                couvert          = db.Couverts.Find(id);
            List <Couverts>         couverts         = db.Couverts.Where(c => c.Reservering.StartTijd.Value == couvert.Reservering.StartTijd.Value).ToList();
            List <TotalIngredients> totalingredients = db.TotalIngredients.ToList();

            int    aantal = 0;
            string name   = "";
            Dictionary <string, int> ingredientWithAmount = new Dictionary <string, int>();

            //Haal het aantal van de couvert.
            //Dit toont de hoveelheid van een bepaalde menu besteld is
            //we gebruiken dit aantal om de hoeveelheid ingredienten te vermenigvuldigen per bestelt menu
            foreach (Couverts cv in couverts)
            {
                aantal = cv.Aantal;
                foreach (Menu menu in cv.Reservering.BesteldeMenus)
                {
                    foreach (Gerecht gerecht in menu.Gerechten)
                    {
                        var allIngredients = totalingredients.Where(i => i.Gerecht.Id == gerecht.Id);
                        foreach (var ing in allIngredients)
                        {
                            Ingredient singleIngredient = db.Ingredients.Where(x => x.Id == ing.Ingredient.Id).FirstOrDefault();
                            //hier heb ik ook de eenheid toegevoegd aan de 'key'
                            //dit maakt het wat makkelijker te lezen op de view

                            //als ingredient (Key) al bestaat in de Dictionary...
                            if (ingredientWithAmount.ContainsKey(singleIngredient.Naam + " (" + singleIngredient.Eenheid + ") "))
                            {
                                //voegen we de aantal toe (Value)
                                ingredientWithAmount[singleIngredient.Naam + " (" + singleIngredient.Eenheid + ") "] += (ing.Aantal * aantal);
                                continue;
                            }
                            else
                            {
                                //anders voegen wij de ingredient toe
                                name = singleIngredient.Naam + " (" + singleIngredient.Eenheid + ") ";
                                ingredientWithAmount.Add(name, ing.Aantal * aantal);
                            }
                        }
                    }
                }
            }

            return(View(ingredientWithAmount));
        }