Files
dev-chiefworks 47f4fad75c Added Other AP
2022-04-26 11:30:34 -04:00

245 lines
6.8 KiB
PHP

<?php
class GeofenceAreaApi extends Api
{
public $apiName = 'geofencearea';
/**
* @OA\Get(
* path="/v1/geofencearea/api/geofencearea/countryApi",
* summary="Get list of countries",
* @OA\Response(
* response="200",
* description="return all geofence area countries",
* @OA\JsonContent(
* type="object"
* )
* )
* )
*/
public function countryApi()
{
$db = new Db();
$result = GeofenceAreaModel::getCountryListWithoutPagination($db->getConnect());
return $this->response($result, 200);
}
/**
* @OA\Get(
* path="/v1/geofencearea/api/geofencearea/cityApi?country_code={country_code}",
* summary="Get list of cities",
* @OA\Response(
* response="200",
* description="city data",
* @OA\JsonContent(
* type="object"
* )
* )
* )
*/
public function cityApi()
{
$db = new Db();
$searchParams = $this->requestParams;
$result = GeofenceAreaModel::getCityListWithoutPagination($db->getConnect(), $searchParams);
return $this->response($result, 200);
}
/**
* @OA\Get(
* path="/v1/geofencearea/api/geofencearea/boundariesApi?city_id={city_id}&country_code={country_code}",
* summary="Get list of GPS areas by city and country_code",
* @OA\Response(
* response="200",
* description="area data",
* @OA\JsonContent(
* type="object"
* )
* )
* )
*/
public function boundariesApi()
{
$db = new Db();
$searchParams = $this->requestParams;
$result = GeofenceAreaModel::getAreaListWithoutPagination($db->getConnect(), $searchParams);
return $this->response($result, 200);
}
/**
* @OA\Get(
* path="/v1/geofencearea/api/geofencearea/tripsApi?from_area_id={from_area_id}&to_area_id={to_area_id}&transport_provider_id={transport_provider_id}",
* summary="Get list of trips between areas (filter by transport_provider_id)",
* @OA\Response(
* response="200",
* description="trip data",
* @OA\JsonContent(
* type="object"
* )
* )
* )
*/
public function tripsApi()
{
$db = new Db();
$searchParams = $this->requestParams;
$startAreaId = $searchParams['from_area_id'] ?? null;
$endAreaId = $searchParams['to_area_id'] ?? null;
if (!$startAreaId || !$endAreaId) {
$result = [
'success' => false,
'message' => 'missing parameter values (from_area_id and to_area_id parameter are required).'
];
return $this->response($result, 200);
}
$result = GeofenceAreaModel::getTripListBetweenArea($db->getConnect(), $startAreaId, $endAreaId, $searchParams);
return $this->response($result, 200);
}
/**
* @OA\Get(
* path="/v1/geofencearea/api/geofencearea/priceComparisonApi?from_area_id={from_area_id}&to_area_id={to_area_id}",
* summary="Compare price between areas (group by transport_provider_id)",
* @OA\Response(
* response="200",
* description="data",
* @OA\JsonContent(
* type="object"
* )
* )
* )
*/
public function priceComparisonApi()
{
$db = new Db();
$searchParams = $this->requestParams;
$startAreaId = $searchParams['from_area_id'] ?? null;
$endAreaId = $searchParams['to_area_id'] ?? null;
if (!$startAreaId || !$endAreaId) {
$result = [
'success' => false,
'message' => 'missing parameter values (from_area_id and to_area_id parameter are required).'
];
return $this->response($result, 200);
}
$data = GeofenceAreaModel::priceComparison($db->getConnect(), $startAreaId, $endAreaId);
$result = [
'success' => true,
'data' => $data ?: []
];
return $this->response($result, 200);
}
/**
* @OA\Get(
* path="/v1/geofencearea/api/geofencearea/priceComparisonFromAreasToOneDestinationApi?from_area_id_list=3,4,5,2,7&to_area_id=9",
* summary="Compare price from list of areas to one destination (group by transport_provider_id)",
* @OA\Response(
* response="200",
* description="data",
* @OA\JsonContent(
* type="object"
* )
* )
* )
*/
public function priceComparisonFromAreasToOneDestinationApi()
{
$db = new Db();
$searchParams = $this->requestParams;
// with params format fo ....&from_area_id_list=2,3,4,5,8,9&to_area_id=15
$startAreaIdList = $searchParams['from_area_id_list'] ?? null;
$endAreaId = $searchParams['to_area_id'] ?? null;
if (!$startAreaIdList || !$endAreaId) {
$result = [
'success' => false,
'message' => 'missing parameter values (from_area_id_list and to_area_id parameter are required).'
];
return $this->response($result, 200);
}
// convert from_area_id_list=2,3,4,5,8,9 => [2,3,4,5,8,9]
$startAreaIdList = explode(',', $startAreaIdList);
$data = [];
foreach ($startAreaIdList as $startAreaId) {
$data[] = GeofenceAreaModel::priceComparison($db->getConnect(), $startAreaId, $endAreaId);
}
$result = [
'success' => true,
'data' => $data ?: []
];
return $this->response($result, 200);
}
public function indexAction()
{
}
public function viewAction()
{
}
public function createAction()
{
}
public function updateAction()
{
}
public function deleteAction()
{
}
protected function getAction()
{
$method = $this->method;
switch ($method) {
case 'GET':
$pos = strpos($this->requestUri[0], '?');
if ($pos !== false && $pos == 0) {
// We want to get "all"
$this->requestUri[0] = "all" . $this->requestUri[0];
}
$tok = strtok($this->requestUri[0], '?');
if ($tok === false || $tok == 'all') {
return 'indexAction';
} else {
return $tok;
}
break;
case 'POST':
return 'createAction';
break;
case 'PUT':
return 'updateAction';
break;
case 'DELETE':
return 'deleteAction';
break;
default:
return null;
}
}
}