private bool CheckSeatAvailability(ViewModels.ReserveringViewModel model) { var cvList = db.Couverts.Where(c => c.Reservering.Datum == model.Reservering.Datum && c.Reservering.StartTijd == model.Reservering.StartTijd).ToList(); int totalSeats = 0; foreach (var couvert in cvList) { //checken of reservering dit menu al heeft besteld if (couvert.Reservering.Id == model.Reservering.Id && couvert.Menu.Id == model.Menu.Id) { //tel de huidige couvert aantal niet totalSeats += model.Total; continue; } totalSeats += couvert.Aantal; if (totalSeats + model.Total > _maxSeats) { return(false); } } if (totalSeats > _maxSeats) { return(false); } return(true); }
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 Reservering ChangedReservering(ViewModels.ReserveringViewModel res) { Reservering changedRes = db.Reserverings.Find(res.ReserveringID); if (changedRes != null) { DateTime newDate = res.SelectedDate; changedRes.Datum = newDate; changedRes.StartTijd = newDate.AddHours(res.SelectedHour); changedRes.EindTijd = changedRes.StartTijd.Value.AddMinutes(120); return(changedRes); } return(null); }
public ActionResult Edit(ViewModels.ReserveringViewModel reservering) { if (ModelState.IsValid) { Reservering changedReservering = ChangedReservering(reservering); if (changedReservering != null) { db.Entry(changedReservering).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } } return(View(reservering)); }
public ActionResult Create(ViewModels.ReserveringViewModel mrViewmodel) { var currentUser = User.Identity.GetUserId(); if (ModelState.IsValid) { Reservering reservering = new Reservering(); DateTime reservedDate = mrViewmodel.SelectedDate; reservering.StartTijd = reservedDate.AddHours(mrViewmodel.SelectedHour); reservering.Klant = db.Users.Where(u => u.Id == currentUser).FirstOrDefault(); reservering.Datum = mrViewmodel.SelectedDate; //eindtijd van een reservering is standaard 2uur later dan de begintijd reservering.EindTijd = reservering.StartTijd.Value.AddMinutes(120); db.Reserverings.Add(reservering); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(mrViewmodel.Reservering)); }