public async Task <IActionResult> AddTimeSlot(TimeSlotBindingModel timeSlotBindingModel) { if (!ModelState.IsValid) { return(RedirectToAction("Index")); } var startTime = DateTime.Parse(timeSlotBindingModel.StartTime); var endTime = DateTime.Parse(timeSlotBindingModel.EndTime); var isValid = await _timeSlotService.AreStartTimeAndEndTimeLegal(startTime, endTime); if (!isValid) { return(BadRequest("The time slot is invalid")); } var timeSlot = await _timeSlotService.GetTimeSlotByTimeAsync(startTime, endTime); if (timeSlot != null) { return(BadRequest("The time slot is already taken")); } var roomModel = await _roomService.GetRoomByIdAsync(timeSlotBindingModel.RoomId); if (roomModel == null) { return(BadRequest("Could not find the room.")); } var sessionModel = await _sessionService.GetSessionByIdAsync(timeSlotBindingModel.SessionId); if (sessionModel == null) { return(BadRequest("Could not find the session")); } var timeSlotModel = new TimeSlotModel { StartTime = startTime, EndTime = endTime, RoomModel = roomModel, SessionModel = sessionModel }; var successful = await _timeSlotService.AddTimeSlotAsync(timeSlotModel); if (!successful) { return(BadRequest("Could not add the time slot")); } return(RedirectToAction("Index")); }
public async Task <IActionResult> AddTimeSlot() { var rooms = await _roomService.GetAllRoomsAsync(); var roomNames = rooms .Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList(); var sessions = await _sessionService.GetAllSessionsAsync(); var sessionTitles = sessions .Select(x => new SelectListItem { Text = x.Title, Value = x.Id.ToString() }).ToList(); var possibleTimeSlots = await _timeSlotService.GetAllLegalTimeSlotsAsync(); var strTimeSlots = possibleTimeSlots .Select(x => new SelectListItem { Text = x.ToString("G"), Value = x.ToString("G") }).ToList(); var timeSlotBindingModel = new TimeSlotBindingModel { SessionTitles = sessionTitles, RoomNames = roomNames, TimeSlots = strTimeSlots }; return(View(timeSlotBindingModel)); }