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)); }