Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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));
        }