/** * 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')); }
// get all the categories in the cities $categories = \App\Category::whereHas('ranks', function ($query) use($city) { $query->where('city_id', '=', $city->id); })->get(); return response()->json($categories); }); Route::get('/categories/{categoryId}', function ($categoryId) { $category = \App\Category::find($categoryId); return response()->json($category); }); Route::get('/categories/{categoryId}/places', function ($categoryId) { $lat = \Illuminate\Support\Facades\Input::get('lat', -27.49611); $lon = \Illuminate\Support\Facades\Input::get('lon', 153.00207); // Check if a valid location $radius = 25; $city = \App\City::select(DB::raw("*, (6371 * acos( cos( radians({$lat}) ) * cos( radians( latitude ) ) * cos( radians( {$lon} ) - radians(longitude) ) + sin( radians({$lat}) ) * sin( radians(latitude) ) )) AS distance"))->having('distance', '<', $radius)->orderby('distance', 'asc')->first(); if (!$city) { abort(400, 'City not supported.'); } $places = \App\Place::select(DB::raw("*, (6371 * acos( cos( radians({$lat}) ) * cos( radians( latitude ) ) * cos( radians( {$lon} ) - radians(longitude) ) + sin( radians({$lat}) ) * sin( radians(latitude) ) )) AS distance"))->orderby('distance', 'asc')->whereHas('ranks', function ($query) use($categoryId) { $query->where('category_id', '=', $categoryId); })->where('city_id', '=', $city->id)->with('ranks', 'ranks.category')->get(); return response()->json($places); }); Route::get('/yelp', function () { $yelp = new \App\Yelp\Yelp(); echo "<pre>"; print_r($yelp->best('pizza', 'Brisbane, Australia')); echo "</pre>"; }); });