示例#1
0
 /**
  * Returns a paginated result
  * 
  * @param Parameters $params
  * @return PayloadInterface
  */
 public function paginate(Parameters $params)
 {
     $sysPrefs = $this->getServiceContainer()->getPreferenceLoader()->getSystemPreferences();
     $defaultSize = $sysPrefs->getPaginationSize();
     $page = $params->getPage('number');
     $size = $params->getPage('size', $defaultSize);
     $query = SubdivisionQuery::create();
     // sorting
     $sort = $params->getSort(Subdivision::getSerializer()->getSortFields());
     foreach ($sort as $field => $order) {
         $method = 'orderBy' . NameUtils::toStudlyCase($field);
         $query->{$method}($order);
     }
     // filtering
     $filter = $params->getFilter();
     if (!empty($filter)) {
         $this->applyFilter($query, $filter);
     }
     // paginate
     if ($size == -1) {
         $model = $query->findAll();
     } else {
         $model = $query->paginate($page, $size);
     }
     // run response
     return new Found(['model' => $model]);
 }
 /**
  * @param Request $request
  * @param Found $payload
  */
 public function found(Request $request, Found $payload)
 {
     $params = new Parameters($request->query->all());
     $serializer = RegionType::getSerializer();
     $resource = new Resource($payload->getModel(), $serializer);
     $resource = $resource->with($params->getInclude(['countries', 'subdivisions', 'area']));
     $resource = $resource->fields($params->getFields(['region-type' => RegionType::getSerializer()->getFields(), 'country' => Country::getSerializer()->getFields(), 'subdivision' => Subdivision::getSerializer()->getFields(), 'area' => RegionArea::getSerializer()->getFields()]));
     $document = new Document($resource);
     return new JsonResponse($document->toArray(), 200);
 }
 /**
  * @param Request $request
  * @param Found $payload
  */
 public function found(Request $request, Found $payload)
 {
     $params = new Parameters($request->query->all());
     $data = $payload->getModel();
     $serializer = Country::getSerializer();
     $resource = new Collection($data, $serializer);
     $resource = $resource->with($params->getInclude(['continent', 'currency', 'type', 'subtype', 'subordinates', 'country', 'subdivisions']));
     $resource = $resource->fields($params->getFields(['country' => Country::getSerializer()->getFields(), 'continent' => Continent::getSerializer()->getFields(), 'currency' => Currency::getSerializer()->getFields(), 'type' => RegionType::getSerializer()->getFields(), 'subtype' => RegionType::getSerializer()->getFields(), 'subordinate' => Country::getSerializer()->getFields(), 'subdivision' => Subdivision::getSerializer()->getFields()]));
     $document = new Document($resource);
     // meta
     if ($params->getPage('size') != -1) {
         $document->setMeta(['total' => $data->getNbResults(), 'first' => '%apiurl%/' . $serializer->getType(null) . '?' . $params->toQueryString(['page' => ['number' => $data->getFirstPage()]]), 'next' => '%apiurl%/' . $serializer->getType(null) . '?' . $params->toQueryString(['page' => ['number' => $data->getNextPage()]]), 'previous' => '%apiurl%/' . $serializer->getType(null) . '?' . $params->toQueryString(['page' => ['number' => $data->getPreviousPage()]]), 'last' => '%apiurl%/' . $serializer->getType(null) . '?' . $params->toQueryString(['page' => ['number' => $data->getLastPage()]])]);
     }
     // return response
     return new JsonResponse($document->toArray());
 }
示例#4
0
 /**
  * Filter the query by a related \keeko\core\model\Subdivision object
  *
  * @param \keeko\core\model\Subdivision|ObjectCollection $subdivision the related object to use as filter
  * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
  *
  * @return ChildCountryQuery The current query, for fluid interface
  */
 public function filterBySubdivision($subdivision, $comparison = null)
 {
     if ($subdivision instanceof \keeko\core\model\Subdivision) {
         return $this->addUsingAlias(CountryTableMap::COL_ID, $subdivision->getCountryId(), $comparison);
     } elseif ($subdivision instanceof ObjectCollection) {
         return $this->useSubdivisionQuery()->filterByPrimaryKeys($subdivision->getPrimaryKeys())->endUse();
     } else {
         throw new PropelException('filterBySubdivision() only accepts arguments of type \\keeko\\core\\model\\Subdivision or Collection');
     }
 }
示例#5
0
 /**
  * Exclude object from result
  *
  * @param   ChildSubdivision $subdivision Object to remove from the list of results
  *
  * @return $this|ChildSubdivisionQuery The current query, for fluid interface
  */
 public function prune($subdivision = null)
 {
     if ($subdivision) {
         $this->addUsingAlias(SubdivisionTableMap::COL_ID, $subdivision->getId(), Criteria::NOT_EQUAL);
     }
     return $this;
 }
示例#6
0
文件: Country.php 项目: keeko/core
 /**
  * @param ChildSubdivision $subdivision The ChildSubdivision object to add.
  */
 protected function doAddSubdivision(ChildSubdivision $subdivision)
 {
     $this->collSubdivisions[] = $subdivision;
     $subdivision->setCountry($this);
 }