Completed
Pull Request — master (#179)
by Alejandro
12:20
created

PaginatorUtilsTrait::serializeItems()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 2
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Shlinkio\Shlink\Common\Paginator\Util;
5
6
use Shlinkio\Shlink\Common\Rest\DataTransformerInterface;
7
use Zend\Paginator\Paginator;
8
use Zend\Stdlib\ArrayUtils;
9
10
trait PaginatorUtilsTrait
11
{
12 1
    private function serializePaginator(Paginator $paginator, ?DataTransformerInterface $transformer = null): array
13
    {
14
        return [
15 1
            'data' => $this->serializeItems(ArrayUtils::iteratorToArray($paginator->getCurrentItems()), $transformer),
16
            'pagination' => [
17 1
                'currentPage' => $paginator->getCurrentPageNumber(),
18 1
                'pagesCount' => $paginator->count(),
19 1
                'itemsPerPage' => $paginator->getItemCountPerPage(),
20 1
                'itemsInCurrentPage' => $paginator->getCurrentItemCount(),
21 1
                'totalItems' => $paginator->getTotalItemCount(),
22
            ],
23
        ];
24
    }
25
26 1
    private function serializeItems(array $items, ?DataTransformerInterface $transformer = null): array
27
    {
28 1
        return $transformer === null ? $items : \array_map([$transformer, 'transform'], $items);
29
    }
30
31
    /**
32
     * Checks if provided paginator is in last page
33
     *
34
     * @param Paginator $paginator
35
     * @return bool
36
     */
37 5
    private function isLastPage(Paginator $paginator): bool
38
    {
39 5
        return $paginator->getCurrentPageNumber() >= $paginator->count();
40
    }
41
}
42