public ActionResult CreateBooking(BookingViewModel model) { using (var repo = new BookingRepository()) { //Double check no new booking was made while user captured data var available = new BookingChecker().CheckBookingAvailable(model.Date, repo); if (!available) { string message = $"There are no more bookings available for the selected date {model.Date.ToShortDateString()}"; ModelState.AddModelError("Date", message); return(RedirectToAction(nameof(MessageBooking), new { Message = message })); } if (ModelState.IsValid) { var entity = new Booking { Date = model.Date, Name = model.Name, Email = model.Email }; var result = repo.CreateBooking(entity); if (result.ID != 0) { return(RedirectToAction(nameof(MessageBooking), new { Message = $"You're booking was successfully created.{Environment.NewLine}Thank you." })); } } return(View(model)); } }
public void NotAvailableIfMaxExceeded() { using (var repo = new InMemoryBookingRepository()) { var date = new DateTime(2019, 3, 13); var checker = new BookingChecker(); var available = checker.CheckBookingAvailable(date, repo); Assert.IsFalse(available); } }
public ActionResult Index(DateCheckViewModel model) { using (var repo = new BookingRepository()) { var available = new BookingChecker().CheckBookingAvailable(model.Date, repo); if (!available) { string message = $"There are no more bookings available for the selected date {model.Date.ToShortDateString()}"; ModelState.AddModelError("Date", message); return(RedirectToAction(nameof(MessageBooking), new { Message = message })); } if (ModelState.IsValid) { return(RedirectToAction(nameof(CreateBooking), new { Date = model.Date })); } return(View(model)); } }