/** * Query by gps * @param float $lat latitude * @param float $lng longitude * @return json */ public function gps($lat, $lng) { $googReq = GoogleAPI::address($lat . ',' . $lng); $stateReq = StateAPI::gps($lat, $lng, ['boundary_id']); $resp = new \stdClass(); $results = Promise\unwrap([$googReq, $stateReq]); if (isset($results[0]->status) && $results[0]->status == "error") { return $this->error($results[0]->message); } $divisions = array_unique(array_merge($results[0]->divisions, array_pluck($results[1], 'division'))); $reps = Representative::whereIn('division', $divisions)->get()->all(); usort($reps, 'rankSort'); $resp->reps = $reps; if (isset($results[0]->location)) { $resp->location = $results[0]->location; if (isset($resp->location->state) && isset(Location::states[$resp->location->state])) { $resp->location->state_name = Location::states[$resp->location->state]; } } return response()->json($resp); }