/**
  *  General string query (not zip or lat/lng) - could be address, city, state, or name
  * @param  string $query text input from homepage
  * @return json
  */
 public function query($query)
 {
     $res = new \stdClass();
     //check if query is a state
     $state = Location::isState($query);
     if (null !== $state) {
         $res->reps = Representative::state($state)->get()->all();
         $res->location = (object) ['state' => $state, 'state_name' => Location::states[$state]];
         $res->reps[] = Representative::where('office', 'President')->first();
         usort($res->reps, 'rankSort');
         return response()->json($res);
     }
     //if query has number try address
     if (preg_match('/[0-9,]/', $query)) {
         $address = $this->address($query);
         if (isset($address->getData()->status) && $address->getData()->status == "error") {
             return $this->error($address->getData()->message);
         }
         if (count($address->getData()->reps) > 0) {
             return $address;
         }
     }
     //if query doesnt have number try name
     $reps = Representative::name($query)->orderBy('name')->get()->all();
     if (count($reps) > 0) {
         $res->reps = $reps;
         return response()->json($res);
     }
     //if no name, or state, try address
     $address = $this->address($query);
     if (isset($address->getData()->reps) && count($address->getData()->reps) > 0) {
         return $address;
     }
     return $this->error('No results.');
 }
Пример #2
0
 public static function find($query)
 {
     if (isset($query->first_name) && isset($query->last_name)) {
         $first = $query->first_name;
         if (stripos($first, " ") !== false) {
             $first = explode(" ", $first)[0];
         }
         $query->name = $first . ' ' . $query->last_name;
     }
     $reps = Representative::name($query->name)->get()->all();
     if (count($reps) == 1) {
         return $reps[0];
     } else {
         if (count($reps) > 1) {
             $reps = array_filter($reps, function ($r) use($query) {
                 if (isset($query->division)) {
                     return $query->division == $r->division;
                 }
                 if (isset($query->district) && isset($query->state)) {
                     return $query->district == $r->district && $query->state == $r->state;
                 }
             });
             if (count($reps) === 1) {
                 return array_pop($reps);
             }
         }
     }
     return null;
 }