public ActionResult SaveRoomBooking(string hotelReservationObj)
        {
            try
            {
                JavaScriptSerializer serializer        = new JavaScriptSerializer();
                ReservationVm        roomReservationVm = serializer.Deserialize <ReservationVm>(hotelReservationObj);

                Booking roomBooking = new Booking();
                roomBooking.Checkindate  = roomReservationVm.CheckinDate;
                roomBooking.Checkoutdate = roomReservationVm.CheckoutDate;
                roomBooking.Noofadult    = roomReservationVm.NoOfAdult;
                roomBooking.Noofchild    = roomReservationVm.NoOfChild;

                Bookingdetail bookingDetail = new Bookingdetail();
                bookingDetail.Advanceamount = roomReservationVm.AdvanceAmount;
                bookingDetail.Billingtype   = roomReservationVm.BillingType;
                bookingDetail.Contactno     = roomReservationVm.ContactNumber;
                bookingDetail.Creditcardno  = roomReservationVm.CreditCardNo;
                bookingDetail.Email         = roomReservationVm.Email;
                bookingDetail.Firstname     = roomReservationVm.FirstName;
                bookingDetail.Lastname      = roomReservationVm.LastName;
                bookingDetail.Noofnight     =
                    roomReservationVm.CheckoutDate.Subtract(roomReservationVm.CheckinDate).Days;
                bookingDetail.Status = Roomregisterdetail.EntityStatus.Booked;
                roomBooking.Bookingdetails.Add(bookingDetail);
                bookingDetail.Booking = roomBooking;

                Customer customer = new Customer();
                customer.Firstname     = roomReservationVm.FirstName;
                customer.Lastname      = roomReservationVm.LastName;
                customer.Dob           = roomReservationVm.Dob;
                customer.Contactnumber = roomReservationVm.ContactNumber;
                customer.Email         = roomReservationVm.Email;
                customer.Address       = roomReservationVm.Address;
                customer.Nationality   = roomReservationVm.Nationality;
                customer.Nid           = roomReservationVm.Nid;
                customer.Passport      = roomReservationVm.Passport;
                customer.Remarks       = roomReservationVm.Remarks;

                IList <Roomhistory> roomHistories = new List <Roomhistory>();
                foreach (var roomId in roomReservationVm.RoomIds)
                {
                    Room room = _hotelReservationService.GetRoomById(Convert.ToInt64(roomId));
                    roomBooking.Rooms.Add(room);
                    Roomhistory roomHistory = new Roomhistory();
                    roomHistory.Arrivaldate = roomBooking.Checkindate;
                    roomHistory.Leavedate   = roomBooking.Checkoutdate;
                    roomHistory.Booking     = roomBooking;
                    roomHistory.Room        = room;
                    roomHistories.Add(roomHistory);
                }
                _hotelReservationService.SaveBooking(roomBooking, bookingDetail, roomHistories, customer);
                return(RedirectToAction("Booking", new { message = "Room Booked Successfully", type = 1 }));
            }
            catch (Exception)
            {
                return(RedirectToAction("Booking", new { message = "Failed to Booked Room", type = 2 }));
            }
        }