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; } } }