/** * Check a raid location. * * @param Request $request * @return json */ public function check(Request $request) { $status = 'not_found'; $legal = false; $raid = []; $now = Carbon::now()->format('Y-m-d'); // Check active raids $activeRaids = Raid::where('start_date', '<=', $now)->where('end_date', '>=', $now)->get(); if (!$activeRaids->count()) { return ['status' => $status, 'legal' => $legal, 'raid' => $raid]; } // Find nearest long and lat $con = mysqli_connect(env("DB_HOST"), env("DB_USERNAME"), env("DB_PASSWORD"), env("DB_DATABASE")); $latitude = mysqli_real_escape_string($con, $request->input('latitude')); $longitude = mysqli_real_escape_string($con, $request->input('longitude')); mysqli_close($con); $distance = RaidLocation::getDistanceInMiles(); $query = "SELECT\n id, raid_id, longitude, latitude, (\n 3959 * acos (\n cos ( radians({$latitude}) )\n * cos( radians( latitude ) )\n * cos( radians( longitude ) - radians({$longitude}) )\n + sin ( radians({$latitude}) )\n * sin( radians( latitude ) )\n )\n ) AS distance\n FROM raid_locations\n HAVING distance < {$distance}\n "; $queryResult = collect(\DB::select(\DB::raw($query))); if ($queryResult->count()) { return ['status' => 'found', 'legal' => true, 'raid' => $queryResult->first()]; } }
/** * Run the database seeds. * * @return void */ public function run() { Raid::all()->each(function ($raid) { $raid->locations()->save(factory(RaidLocation::class)->make()); }); }