public ActionResult AddBooking(int?id) { try { var hotel = hotelService.GetHotel(id); var booking = new FullBookingViewModel { HotelID = hotel.HotelID, HotelName = hotel.Name, FreeRooms = new List <Tuple <int, int, decimal> >() }; return(View(booking)); } catch (ValidationException ex) { return(Content(ex.Message)); } }
public ActionResult AddBooking(FullBookingViewModel booking, string command) { booking.FreeRooms = new List <Tuple <int, int, decimal> >(); try { if (command.Equals("Find free rooms")) { var freeRooms = roomPriceService.GetRoomsByHotelAndDate(booking.HotelID, booking.StartDate, booking.EndDate); booking.FreeRooms = freeRooms; } else { booking.FreeRooms = roomPriceService.GetRoomsByHotelAndDate(booking.HotelID, booking.StartDate, booking.EndDate); if (ModelState.IsValid) { var mapper = new MapperConfiguration(cfg => cfg.CreateMap <FullBookingViewModel, FullBookingDTO>()).CreateMapper(); var fullBookingDto = mapper.Map <FullBookingViewModel, FullBookingDTO>(booking); bookingService.BookRoom(fullBookingDto); booking.FreeRooms = roomPriceService.GetRoomsByHotelAndDate(booking.HotelID, booking.StartDate, booking.EndDate); ViewBag.SuccessMsg = "You successfully booked a room."; return(View(booking)); } } } catch (ValidationException ex) { ModelState.AddModelError(ex.Property, ex.Message); ViewBag.DatesError = ex.Message; return(View(booking)); } catch (RoomAlreadyBookedException ex) { ModelState.AddModelError(ex.Property, ex.Message); ViewBag.RoomError = ex.Message; return(View(booking)); } return(View(booking)); }