Pagination::getPageNumber()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php namespace Nord\Lumen\Search;
2
3
use Nord\Lumen\Search\Exceptions\InvalidArgument;
4
5
class Pagination
6
{
7
    const DEFAULT_PAGE_SIZE = 20;
8
9
    /**
10
     * @var int
11
     */
12
    private $pageNumber;
13
14
    /**
15
     * @var int
16
     */
17
    private $pageSize;
18
19
20
    /**
21
     * Pagination constructor.
22
     *
23
     * @param int $pageNumber
24
     * @param int $pageSize
25
     */
26
    public function __construct($pageNumber = 1, $pageSize = self::DEFAULT_PAGE_SIZE)
27
    {
28
        $this->setPageNumber($pageNumber);
29
        $this->setPageSize($pageSize);
30
    }
31
32
33
    /**
34
     * @return int
35
     */
36
    public function calculateOffset()
37
    {
38
        return ($this->pageNumber * $this->pageSize) - $this->pageSize;
39
    }
40
41
42
    /**
43
     * @return int
44
     */
45
    public function getPageNumber()
46
    {
47
        return $this->pageNumber;
48
    }
49
50
51
    /**
52
     * @return int
53
     */
54
    public function getPageSize()
55
    {
56
        return $this->pageSize;
57
    }
58
59
60
    /**
61
     * @param int $pageNumber
62
     *
63
     * @throws InvalidArgument
64
     */
65
    private function setPageNumber($pageNumber)
66
    {
67
        if (empty($pageNumber)) {
68
            throw new InvalidArgument('Pagination page number cannot be empty.');
69
        }
70
71
        if (!is_integer($pageNumber)) {
72
            throw new InvalidArgument('Pagination page number is malformed.');
73
        }
74
75
        $this->pageNumber = $pageNumber;
76
    }
77
78
79
    /**
80
     * @param int $pageSize
81
     *
82
     * @throws InvalidArgument
83
     */
84
    private function setPageSize($pageSize)
85
    {
86
        if (empty($pageSize)) {
87
            throw new InvalidArgument('Pagination page size cannot be empty.');
88
        }
89
90
        if (!is_integer($pageSize)) {
91
            throw new InvalidArgument('Pagination page size is malformed.');
92
        }
93
94
        $this->pageSize = $pageSize;
95
    }
96
}
97