There are three tables; venues
, venues_parameters
and calendars
tables. On a venue
table all venues added and venue details added on venues_parameters
table. On a calendar
table, a booked (1st half, 2nd half, full day with flag 1, 2 & 3) venue detailed store with date and other information.
What i want that if i am searching with today date, date it is check on the calendar
table that the searchable date are already booked or not, if date booked with 1st half or 2nd half venue will available on search else not available.
My controller code :
public function index(Request $request, $event_type = '', $capacity = '', $venue_type = '', $catering = '')
{
//dd($request->datepicker); return date (format : 25/12/2017)
$venueQuery = Venue::whereStatus('Active');
dd($venueQuery);
if($request->occasion) {
$event_type = $request->occasion;
}
if($request->datepicker) {
$selectedDate = $request->datepicker;
} else {
$selectedDate = date('m/d/Y');
}
if($request->capacity) {
$capacity = $request->capacity;
}
if($request->venue_type_id) {
$venue_type = $request->venue_type_id;
}
if($request->catering) {
$catering = $request->catering;
}
if($event_type != '') {
$venueQuery->whereHas('occasions', function ($query) use ($event_type) {
$query->where('occasions.id', $event_type);
});
}
if($capacity != '') {
$venueQuery->whereHas('venueParameter', function ($query) use ($capacity) {
$query->where('venue_parameters.max_capacity', $capacity);
});
}
if($venue_type != '') {
$venueQuery->whereHas('venueType', function ($query) use ($venue_type) {
$query->where('venue_types.id', $venue_type);
});
}
if($catering != '') {
$venueQuery->whereHas('venueParameter', function ($query) use ($catering) {
if($catering == "indoor") {
$catering = "1";
$query->where('venue_parameters.is_indoor', $catering);
} if($catering == "outdoor") {
$catering = "1";
$query->where('venue_parameters.is_outdoor', $catering);
}
});
}
$venues = $venueQuery->get();
$venues_count = count($venues);
return view('front.venue.index', compact('venues','event_type','venues_count','selectedDate'));
}