Added Other AP
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
class RadiusApi extends Api
|
||||
{
|
||||
public $apiName = 'radius';
|
||||
const RADIUS_LIMIT = 10000;
|
||||
const DEFAULT_DIR = 'any';
|
||||
const DEFAULT_LIMIT = 10;
|
||||
|
||||
public function indexAction()
|
||||
{
|
||||
return $this->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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user