public ActionResult Create(CreateBookingRequestViewModel model) { try { var startDate = Convert.ToDateTime(model.CheckinDate); var endDate = Convert.ToDateTime(model.CheckOutDate); var roomTypes = _roomTypeRepo.FindAll(); var roomTypeItems = roomTypes.Select(q => new SelectListItem { Text = q.RoomName, Value = q.RoomTypeId.ToString() }); model.RoomType = roomTypeItems; if (!ModelState.IsValid) { return(View(model)); } if (DateTime.Compare(startDate, endDate) > 1) { ModelState.AddModelError("", "CheckinDate cannot be further than the CheckOutDate"); return(View(model)); } var employee = _userManager.GetUserAsync(User).Result; var allocation = _bookingRepo.GetBookingsByEmployeeAndType(employee.Id, model.RoomTypeId);//id to employee id int daysRequested = (int)(startDate - endDate).TotalDays; if (daysRequested > allocation.NumberOfDays) { ModelState.AddModelError("", "You do not have sufficient days to make this request"); return(View(model)); } var bookingRequestModel = new BookingRequestViewModel { EmployeeBookingRoomId = employee.Id, CheckinDate = startDate, CheckOutDate = endDate, Approved = null, DateRequested = DateTime.Now, DateActioned = DateTime.Now, RoomTypeId = model.RoomTypeId }; var bookingRequest = _mapper.Map <BookingRequest>(bookingRequestModel); var isSuccess = _bookingRequestRepo.Create(bookingRequest); if (!isSuccess) { ModelState.AddModelError("", "Something went wrong WITH SUBMITTING RECORD"); return(View(model)); } return(RedirectToAction("MyBooking")); } catch (Exception ex) { ModelState.AddModelError("", "Something went wrong"); return(View(model)); } }
// GET: BookingRequest/Create public ActionResult Create() { var roomTypes = _roomTypeRepo.FindAll(); var roomTypeItems = roomTypes.Select(q => new SelectListItem { Text = q.RoomName, Value = q.RoomTypeId.ToString() }); var model = new CreateBookingRequestViewModel { RoomType = roomTypeItems }; return(View(model)); }