/** * Show the application dashboard to the user, including suggestions to the user. * * @return Response */ public function index() { $user = User::where('id', \Auth::id())->with('placesWanted')->with('events')->first(); if ($user->placesWanted) { $event_ids = EventPlace::select('event_id')->whereNotIn('event_id', $user->events->lists('id'))->whereIn('place_id', $user->placesWanted->lists('id'))->orderBy(\DB::raw('rand()'))->distinct()->take(6)->get()->lists('event_id')->toArray(); if (sizeof($event_ids) < 6) { $placeStateWanted = Place::select('id')->whereIn('state', $user->placesWanted->lists('state'))->get(); $event_ids = array_merge($event_ids, EventPlace::select('event_id')->whereNotIn('event_id', $user->events->lists('id'))->whereIn('place_id', $placeStateWanted->lists('id'))->orderBy(\DB::raw('rand()'))->distinct()->take(6 - sizeof($event_ids))->get()->lists('event_id')->toArray()); if (sizeof($event_ids) < 6) { $placeCountryWanted = Place::select('id')->whereIn('country', $user->placesWanted->lists('country'))->get(); $event_ids = array_merge($event_ids, EventPlace::select('event_id')->whereNotIn('event_id', $user->events->lists('id'))->whereIn('place_id', $placeCountryWanted->lists('id'))->orderBy(\DB::raw('rand()'))->distinct()->take(6 - sizeof($event_ids))->get()->lists('event_id')->toArray()); } } } $events = Event::where('date_start', '>=', new \DateTime('today'))->whereIn('id', $event_ids)->get(); if (sizeof($event_ids) < 6) { $events = $events->merge(Event::where('date_start', '>=', new \DateTime('today'))->orderBy(\DB::raw('rand()'))->take(6 - sizeof($event_ids))->get()); } $auth_name = \Auth::User()->first_name; //$events = Event::take(5)->get(); return view('home', compact('auth_name', 'events')); }