AbstractRestController::createRepresentation()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 17
ccs 11
cts 11
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 11
nc 1
nop 2
crap 1
1
<?php
2
3
namespace AppBundle\Controller;
4
5
use Doctrine\ORM\QueryBuilder;
6
use FOS\RestBundle\Controller\FOSRestController;
7
use FOS\RestBundle\Routing\ClassResourceInterface;
8
use Hateoas\Configuration\Route;
9
use Hateoas\Representation\Factory\PagerfantaFactory;
10
use Pagerfanta\Adapter\DoctrineORMAdapter;
11
use Pagerfanta\Pagerfanta;
12
use Symfony\Component\HttpFoundation\Request;
13
14
/**
15
 * Class AbstractRestController
16
 *
17
 * @package AppBundle\RestController
18
 */
19
abstract class AbstractRestController extends FOSRestController implements ClassResourceInterface
20
{
21
    /**
22
     * @param Request      $request
23
     * @param QueryBuilder $queryBuilder
24
     *
25
     * @return \Hateoas\Representation\PaginatedRepresentation
26
     */
27 1
    protected function createRepresentation(Request $request, QueryBuilder $queryBuilder)
28
    {
29 1
        $pagerAdapter = new DoctrineORMAdapter($queryBuilder);
30 1
        $pager = new Pagerfanta($pagerAdapter);
31 1
        $limit = $request->query->getInt('limit', 10);
32 1
        $page = $request->query->getInt('page', 1);
33
34 1
        $pager->setCurrentPage($page);
35 1
        $pager->setMaxPerPage($limit);
36
37 1
        $pagerFactory = new PagerfantaFactory();
38
39 1
        return $pagerFactory->createRepresentation(
40 1
            $pager,
41 1
            new Route($request->attributes->get('_route'), ['limit' => $limit, 'page' => $page])
42
        );
43
    }
44
}
45