| @@ 58-79 (lines=22) @@ | ||
| 55 | /** |
|
| 56 | * {@inheritdoc} |
|
| 57 | */ |
|
| 58 | public function applyToCollection(Builder $queryBuilder, string $resourceClass, string $operationName = null) |
|
| 59 | { |
|
| 60 | $request = $this->requestStack->getCurrentRequest(); |
|
| 61 | if (null === $request) { |
|
| 62 | return; |
|
| 63 | } |
|
| 64 | ||
| 65 | $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); |
|
| 66 | if (!$this->isPaginationEnabled($request, $resourceMetadata, $operationName)) { |
|
| 67 | return; |
|
| 68 | } |
|
| 69 | ||
| 70 | $itemsPerPage = $resourceMetadata->getCollectionOperationAttribute($operationName, 'pagination_items_per_page', $this->itemsPerPage, true); |
|
| 71 | if ($resourceMetadata->getCollectionOperationAttribute($operationName, 'pagination_client_items_per_page', $this->clientItemsPerPage, true)) { |
|
| 72 | $itemsPerPage = (int) $request->query->get($this->itemsPerPageParameterName, $itemsPerPage); |
|
| 73 | } |
|
| 74 | ||
| 75 | $queryBuilder |
|
| 76 | ->skip(($request->query->get($this->pageParameterName, 1) - 1) * $itemsPerPage) |
|
| 77 | ->limit($itemsPerPage); |
|
| 78 | } |
|
| 79 | ||
| 80 | /** |
|
| 81 | * {@inheritdoc} |
|
| 82 | */ |
|
| @@ 60-80 (lines=21) @@ | ||
| 57 | /** |
|
| 58 | * {@inheritdoc} |
|
| 59 | */ |
|
| 60 | public function applyToCollection(QueryBuilder $queryBuilder, string $resourceClass, string $operationName = null) |
|
| 61 | { |
|
| 62 | $request = $this->requestStack->getCurrentRequest(); |
|
| 63 | if (null === $request) { |
|
| 64 | return; |
|
| 65 | } |
|
| 66 | ||
| 67 | $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); |
|
| 68 | if (!$this->isPaginationEnabled($request, $resourceMetadata, $operationName)) { |
|
| 69 | return; |
|
| 70 | } |
|
| 71 | ||
| 72 | $itemsPerPage = $resourceMetadata->getCollectionOperationAttribute($operationName, 'pagination_items_per_page', $this->itemsPerPage, true); |
|
| 73 | if ($resourceMetadata->getCollectionOperationAttribute($operationName, 'pagination_client_items_per_page', $this->clientItemsPerPage, true)) { |
|
| 74 | $itemsPerPage = (int) $request->query->get($this->itemsPerPageParameterName, $itemsPerPage); |
|
| 75 | } |
|
| 76 | ||
| 77 | $queryBuilder |
|
| 78 | ->setFirstResult(($request->query->get($this->pageParameterName, 1) - 1) * $itemsPerPage) |
|
| 79 | ->setMaxResults($itemsPerPage); |
|
| 80 | } |
|
| 81 | ||
| 82 | /** |
|
| 83 | * {@inheritdoc} |
|