private bool ValidateBookingTable(BookingTable bookingTable) { bool isValid = true; // Check if from date is after To date if (bookingTable.From > bookingTable.To) { ModelState.AddModelError("Booking.From", "Start date cannot be after end date"); var createBookingTableViewModel = new CreateBookingTableViewModel() { Tables = DbContext.Tables, }; isValid = false; } //1. Hämta ut alla bokning som har samma tableId som den nya bokningen List <BookingTable> bookingsFromDb = DbContext.BookingTables.Where(b => b.TableId == bookingTable.TableId).ToList(); //2. Kolla om något av dessa bokningar har överlappande datum foreach (var oldBooking in bookingsFromDb) { if (DateHelpers.HasSharedDateIntervals(bookingTable.From, bookingTable.To, oldBooking.From, oldBooking.To)) { ModelState.AddModelError("Booking.From", "Date already occupied."); var createBookingTableViewModel = new CreateBookingTableViewModel() { Tables = DbContext.Tables }; isValid = false; } } return(isValid); }
// GET: Bookings/Create public IActionResult Create() { var createBookingTableViewModel = new CreateBookingTableViewModel() { Tables = DbContext.Tables }; return(View(createBookingTableViewModel)); }
// från vyn till metoden i controllen public IActionResult Create(BookingTable bookingTable) { if (!ValidateBookingTable(bookingTable)) { var createBookingTableViewModel = new CreateBookingTableViewModel() { Tables = DbContext.Tables, BookingTable = bookingTable }; return(View(createBookingTableViewModel)); } var tabelName = DbContext.Tables.FirstOrDefault(r => r.Id == bookingTable.TableId).Name; bookingTable.Id = Guid.NewGuid(); bookingTable.TableName = tabelName; DbContext.BookingTables.Add(bookingTable); return(RedirectToAction("Index")); }