response( array( 'error' => 'Data not found' ), 404); } /** * Method GET * Get single record (by id) * http://DOMAIN/radius/1 * @return string */ public function viewAction() { //id must be the first parameter after /radius/x return $this->response( array( 'error'=> 'Data not found' ), 404); } public function createAction() { $message = 'Data not found'; $code = 404; $lat = $this->requestParams['lat'] ?? NULL; $lng = $this->requestParams['lng'] ?? NULL; $rad = $this->requestParams['radius'] ?? NULL; $typ = $this->requestParams['type'] ?? self::DEFAULT_DIR; $lim = $this->requestParams['limit'] ?? self::DEFAULT_LIMIT; try { if ($lat==NULL || $lng==NULL) { throw new RuntimeException('Invalid GPS coordinates',500); } if ($rad<10 || $rad>self::RADIUS_LIMIT) { throw new RuntimeException('Invalid radius',500); } if ($typ!='in' && $typ!='out') { $typ = self::DEFAULT_DIR; } if ($limit<1 || $limit>self::DEFAULT_LIMIT) { $limit = self::DEFAULT_LIMIT; } $db = new Db(); $res = NULL; $err = NULL; if ($typ=='in') { list($res,$err) = Radius::inboundTrips($db->getConnectGPS(), $lat, $lng, $rad); } else if ($typ=='out') { list($res,$err) = Radius::outboundTrips($db->getConnectGPS(), $lat, $lng, $rad); } else { list($res,$err) = Radius::anyTrips($db->getConnectGPS(), $lat, $lng, $rad); } if (!$res) { if ($err!="") { throw new RuntimeException($err, 500); } throw new RuntimeException('Data not found', 404); } $ids = []; foreach ($res as $f) { $ids[] = $f["id"]; } // Get $lim latest trips list($res,$err) = Radius::limitTrips($db->getConnect(), $ids, $lim, 'travel_date', 'DESC'); if (!$res) { if ($err!="") { throw new RuntimeException($err, 500); } throw new RuntimeException('Data not found', 404); } $trips = []; foreach ($res as $f) { $id = $f["id"]; $trip = Trips::getById($db->getConnect(), (int)$id); if(is_array($trip) && count($trip)>0){ $trips[] = $trip; } } return $this->response( array( "lat" => $lat, "lng" => $lng, "radius" => $rad, "type" => $typ, "limit" => $lim, "trips" => $trips ), 200); } catch (RuntimeException $e) { $message = $e->getMessage(); $code = $e->getCode(); } return $this->response( array( "error" => $message ), $code); } public function updateAction() { return $this->response( array( "error" => "Update error" ), 400); } public function deleteAction() { return $this->response( array( "error" => "Delete error" ), 500); } }