Example #1
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     $filters = $context->getFilters();
     if (!$filters->has(self::SORT_FILTER_KEY)) {
         $filters->add(self::SORT_FILTER_KEY, new SortFilter(DataType::ORDER_BY, 'Result sorting. One or several fields separated by comma, for example \'field1,-field2\'.', function () use($entityClass) {
             return $this->doctrineHelper->getOrderByIdentifier($entityClass);
         }, function ($value) {
             $result = [];
             if (null !== $value) {
                 foreach ($value as $field => $order) {
                     $result[] = (Criteria::DESC === $order ? '-' : '') . $field;
                 }
             }
             return implode(RestRequest::ARRAY_DELIMITER, $result);
         }));
     }
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var Context $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $this->aclHelper->applyAclToCriteria($context->getClassName(), $context->getCriteria(), $this->permission);
 }
Example #3
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $filters = $context->getFilters();
     $this->addPageSizeFilter($filters);
     $this->addPageNumberFilter($filters);
 }
Example #4
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $criteria = $context->getCriteria();
     // check if a paging disabled
     if (self::UNLIMITED_RESULT === $criteria->getMaxResults()) {
         $criteria->setFirstResult(null);
         $criteria->setMaxResults(null);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     $this->addSortFilter($context->getFilters(), $entityClass);
 }
Example #6
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var Context $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $filterValues = $context->getFilterValues();
     $filters = $context->getFilters();
     foreach ($filters as $filterKey => $filter) {
         if ($filter instanceof SortFilter) {
             $this->validateSortValue($this->getSortFilterValue($filterValues, $filterKey), $context->hasConfigOfSorters() ? $context->getConfigOfSorters() : null);
         }
     }
 }
Example #7
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $criteria = $context->getCriteria();
     $filterValues = $context->getFilterValues();
     $filters = $context->getFilters();
     foreach ($filters as $filterKey => $filter) {
         $filterValue = $filterValues->has($filterKey) ? $filterValues->get($filterKey) : null;
         $filter->apply($criteria, $filterValue);
     }
 }
Example #8
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     $query = $this->doctrineHelper->getEntityRepositoryForClass($entityClass)->createQueryBuilder('e');
     $this->doctrineHelper->applyCriteria($query, $context->getCriteria());
     $context->setQuery($query);
 }
Example #9
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     $filterValues = $context->getFilterValues();
     if ($filterValues->has(self::SORT_FILTER_KEY)) {
         $filterValue = $filterValues->get(self::SORT_FILTER_KEY);
         $filterValue->setValue($this->normalizeValue($filterValue->getValue(), $entityClass));
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $filterValues = $context->getFilterValues();
     $filters = $context->getFilters();
     foreach ($filters as $filterKey => $filter) {
         $filterValue = null;
         if ($filterValues->has($filterKey)) {
             $filterValue = $filterValues->get($filterKey);
             if ($filter instanceof StandaloneFilter) {
                 $value = $this->valueNormalizer->normalizeValue($filterValue->getValue(), $filter->getDataType(), $context->getRequestType(), $filter->isArrayAllowed($filterValue->getOperator()));
                 $filterValue->setValue($value);
             }
         }
     }
 }
Example #11
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     $entityClass = $context->getClassName();
     if (!$this->doctrineHelper->isManageableEntityClass($entityClass)) {
         // only manageable entities are supported
         return;
     }
     $query = $this->doctrineHelper->getEntityRepositoryForClass($entityClass)->createQueryBuilder('e');
     $this->doctrineHelper->applyCriteria($query, $context->getCriteria());
     $entityId = $context->getId();
     $idFields = $this->doctrineHelper->getEntityIdentifierFieldNamesForClass($entityClass);
     if (count($idFields) === 1) {
         // single identifier
         if (is_array($entityId)) {
             throw new \UnexpectedValueException(sprintf('The entity identifier cannot be an array because the entity "%s" has single primary key.', $entityClass));
         }
         $query->andWhere(sprintf('e.%s = :id', reset($idFields)))->setParameter('id', $entityId);
     } else {
         // combined identifier
         if (!is_array($entityId)) {
             throw new \UnexpectedValueException(sprintf('The entity identifier must be an array because the entity "%s" has composite primary key.', $entityClass));
         }
         $counter = 1;
         foreach ($idFields as $field) {
             if (!array_key_exists($field, $entityId)) {
                 throw new \UnexpectedValueException(sprintf('The entity identifier array must have the key "%s" because ' . 'the entity "%s" has composite primary key.', $field, $entityClass));
             }
             $query->andWhere(sprintf('e.%s = :id%d', $field, $counter))->setParameter(sprintf('id%d', $counter), $entityId[$field]);
             $counter++;
         }
     }
     $context->setQuery($query);
 }
Example #12
0
 /**
  * {@inheritdoc}
  */
 public function process(ContextInterface $context)
 {
     /** @var GetListContext $context */
     if ($context->hasQuery()) {
         // a query is already built
         return;
     }
     if (!in_array(RequestType::REST, $context->getRequestType(), true)) {
         parent::process($context);
     } else {
         // reuse REST API paging filters
         $filters = $context->getFilters();
         if ($filters->has(RestSetDefaultPaging::PAGE_SIZE_FILTER_KEY)) {
             $filter = $filters->get(RestSetDefaultPaging::PAGE_SIZE_FILTER_KEY);
             $filters->remove(RestSetDefaultPaging::PAGE_SIZE_FILTER_KEY);
             $filters->add($this->getPageSizeFilterKey(), $filter);
         }
         if ($filters->has(RestSetDefaultPaging::PAGE_NUMBER_FILTER_KEY)) {
             $filter = $filters->get(RestSetDefaultPaging::PAGE_NUMBER_FILTER_KEY);
             $filters->remove(RestSetDefaultPaging::PAGE_NUMBER_FILTER_KEY);
             $filters->add($this->getPageNumberFilterKey(), $filter);
         }
     }
 }