| Total Complexity | 9 |
| Total Lines | 47 |
| Duplicated Lines | 0 % |
| Coverage | 95% |
| Changes | 0 | ||
| 1 | <?php |
||
| 11 | final class VisitsParams |
||
| 12 | { |
||
| 13 | private const FIRST_PAGE = 1; |
||
| 14 | private const ALL_ITEMS = -1; |
||
| 15 | |||
| 16 | private ?DateRange $dateRange; |
||
| 17 | private int $page; |
||
| 18 | private int $itemsPerPage; |
||
| 19 | |||
| 20 | 16 | public function __construct(?DateRange $dateRange = null, int $page = self::FIRST_PAGE, ?int $itemsPerPage = null) |
|
| 21 | { |
||
| 22 | 16 | $this->dateRange = $dateRange ?? new DateRange(); |
|
| 23 | 16 | $this->page = $page; |
|
| 24 | 16 | $this->itemsPerPage = $this->determineItemsPerPage($itemsPerPage); |
|
| 25 | 16 | } |
|
| 26 | |||
| 27 | 16 | private function determineItemsPerPage(?int $itemsPerPage): int |
|
| 28 | { |
||
| 29 | 16 | if ($itemsPerPage !== null && $itemsPerPage < 0) { |
|
| 30 | return self::ALL_ITEMS; |
||
| 31 | } |
||
| 32 | |||
| 33 | 16 | return $itemsPerPage ?? self::ALL_ITEMS; |
|
| 34 | } |
||
| 35 | |||
| 36 | 8 | public static function fromRawData(array $query): self |
|
| 37 | { |
||
| 38 | 8 | return new self( |
|
| 39 | 8 | new DateRange(parseDateFromQuery($query, 'startDate'), parseDateFromQuery($query, 'endDate')), |
|
| 40 | 8 | (int) ($query['page'] ?? 1), |
|
| 41 | 8 | isset($query['itemsPerPage']) ? (int) $query['itemsPerPage'] : null, |
|
| 42 | ); |
||
| 43 | } |
||
| 44 | |||
| 45 | 7 | public function getDateRange(): DateRange |
|
| 48 | } |
||
| 49 | |||
| 50 | 3 | public function getPage(): int |
|
| 53 | } |
||
| 54 | |||
| 55 | 3 | public function getItemsPerPage(): int |
|
| 56 | { |
||
| 60 |