/**
  * 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);
 }