/**
  * Redirect a room availability page according to customer requests.
  *
  * @param $request
  *
  * @return Website.Rooms_availability view with availability details
  */
 function checkRoomAvailability(Request $request)
 {
     //predefined variables for the room reservation form
     $total_rooms_have = config('constants.CHK_ZERO');
     $total_rooms = HotelInfo::value('selectable_no_of_rooms');
     $kids_can = HotelInfo::value('no_of_kids');
     $adults_can = HotelInfo::value('no_of_adults');
     $room_types = ROOM_TYPE::get();
     foreach ($room_types as $room_type) {
         $total_rooms_have += DB::table('ROOMS')->where('room_type_id', '=', $room_type->room_type_id)->count();
     }
     //check if the room count exceed the available rooms
     if ($total_rooms > $total_rooms_have) {
         $total_rooms = $total_rooms_have;
     }
     //clears the hall reservation session details if there are any
     Session::forget(['hall_selected', 'event_date', 'total_payable']);
     //get the details from the form submission and store in variables
     $inputs = $request::all();
     $check_in = $inputs['check_in'];
     $check_out = $inputs['check_out'];
     $adults = $inputs['adults'];
     $kids = $inputs['children'];
     //requested number of rooms
     $rooms = $inputs['ono_of_rooms'];
     //put the requested reservation details to the session
     Session::put(['check_in' => $check_in, 'check_out' => $check_out, 'adults' => $adults, 'kids' => $kids, 'rooms' => $rooms]);
     //clear the session if values already exists
     if (Session::has('room_types')) {
         $room_types = session('room_types');
         foreach ($room_types as $room_type) {
             Session::forget(['room_type_name' . $room_type, 'no_of_rooms' . $room_type, 'rate' . $room_type]);
             Session::forget(['meal_type' . $room_type, 'rate_code' . $room_type, 'total_payable']);
         }
         Session::forget('room_types');
     }
     $room_types = ROOM_TYPE::get();
     $room_results = $this->getAvailableRoomTypeCount($check_in, $check_out, "NEW", null);
     $total_rooms_available = $room_results['total_rooms_available'];
     $room_type_available = $room_results['room_type_available'];
     foreach ($room_types as $room_type) {
         $total_rooms += $room_type->count;
     }
     //check the total rooms available with the requested total rooms
     if ($total_rooms_available < $rooms) {
         if ($total_rooms_available < config('constants.CHK_ZERO')) {
             $total_rooms_available = config('constants.CHK_ZERO');
         }
         return redirect('room_packages')->with(['rooms_not_available' => 'Sorry requested no of rooms are not available.Only ' . $total_rooms_available . ' room(s) are available']);
     } else {
         return view('Website.Rooms_availability', ['room_type_available' => $room_type_available, "room_types" => $room_types, 'total_rooms' => $total_rooms, 'kids_can' => $kids_can, 'adults_can' => $adults_can]);
     }
 }
 /**
  * This function provides the view of the rooms page with details
  *
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function roomsView()
 {
     //this calls the clear session function in order to clear the session
     $this->clearSession();
     $room_types = ROOM_TYPE::get();
     $total_rooms_have = config('constants.CHK_ZERO');
     $total_rooms = HotelInfo::value('selectable_no_of_rooms');
     $kids_can = HotelInfo::value('no_of_kids');
     $adults_can = HotelInfo::value('no_of_adults');
     foreach ($room_types as $room_type) {
         $total_rooms_have += DB::table('ROOMS')->where('room_type_id', '=', $room_type->room_type_id)->count();
     }
     //check if the room count exceed the available rooms
     if ($total_rooms > $total_rooms_have) {
         $total_rooms = $total_rooms_have;
     }
     return view('Website.Room_Packages', ["room_types" => $room_types, 'total_rooms' => $total_rooms, 'kids_can' => $kids_can, 'adults_can' => $adults_can]);
 }
 public function updateReservationInfo(Request $request)
 {
     $inputs = $request->all();
     $field = $inputs['field'];
     $value = $inputs['value'];
     if ($field == 'chk_in') {
         HotelInfo::where('id', '=', 1)->update(['check_in' => $value]);
         return response()->json(["result" => "success"]);
     } elseif ($field == 'chk_out') {
         HotelInfo::where('id', '=', 1)->update(['check_out' => $value]);
         return response()->json(["result" => "success"]);
     } elseif ($field == 'adults') {
         HotelInfo::where('id', '=', 1)->update(['no_of_adults' => $value]);
         return response()->json(["result" => "success"]);
     } elseif ($field == 'kids') {
         HotelInfo::where('id', '=', 1)->update(['no_of_kids' => $value]);
         return response()->json(["result" => "success"]);
     } elseif ($field == 'rooms') {
         HotelInfo::where('id', '=', 1)->update(['selectable_no_of_rooms' => $value]);
         return response()->json(["result" => "success"]);
     } elseif ($field == 'hall_time1') {
         $value_b = $inputs['value_b'];
         HotelInfo::where('id', '=', 1)->update(['hall_time_slot_1_from' => $value, 'hall_time_slot_1_to' => $value_b]);
         return response()->json(["result" => "success"]);
     } elseif ($field == 'hall_time2') {
         $value_b = $inputs['value_b'];
         HotelInfo::where('id', '=', 1)->update(['hall_time_slot_2_from' => $value, 'hall_time_slot_2_to' => $value_b]);
         return response()->json(["result" => "success"]);
     }
 }