Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
20 / 20 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
1 / 1 |
AvailableDaysListService | |
100.00% |
20 / 20 |
|
100.00% |
4 / 4 |
8 | |
100.00% |
1 / 1 |
getAvailableDaysList | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
2 | |||
extractClientData | |
100.00% |
13 / 13 |
|
100.00% |
1 / 1 |
4 | |||
validateClientData | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
getAvailableDays | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 |
1 | <?php |
2 | |
3 | declare(strict_types=1); |
4 | |
5 | namespace BO\Zmscitizenapi\Services\Availability; |
6 | |
7 | use BO\Zmscitizenapi\Models\AvailableDays; |
8 | use BO\Zmscitizenapi\Services\Core\ValidationService; |
9 | use BO\Zmscitizenapi\Services\Core\ZmsApiFacadeService; |
10 | |
11 | class AvailableDaysListService |
12 | { |
13 | public function getAvailableDaysList(array $queryParams): AvailableDays|array |
14 | { |
15 | $clientData = $this->extractClientData($queryParams); |
16 | $errors = $this->validateClientData($clientData); |
17 | if (!empty($errors['errors'])) { |
18 | return $errors; |
19 | } |
20 | |
21 | return $this->getAvailableDays($clientData); |
22 | } |
23 | |
24 | private function extractClientData(array $queryParams): object |
25 | { |
26 | $queryParams['officeId'] = isset($queryParams['officeId']) ? (string) $queryParams['officeId'] : ''; |
27 | $queryParams['serviceId'] = isset($queryParams['serviceId']) ? (string) $queryParams['serviceId'] : ''; |
28 | $serviceCount = $queryParams['serviceCount'] ?? ''; |
29 | $serviceCounts = !empty($serviceCount) |
30 | ? array_map('trim', explode(',', (string) $serviceCount)) |
31 | : []; |
32 | return (object) [ |
33 | 'officeIds' => array_map('trim', explode(',', $queryParams['officeId'])), |
34 | 'serviceIds' => array_map('trim', explode(',', $queryParams['serviceId'])), |
35 | 'serviceCounts' => $serviceCounts, |
36 | 'startDate' => $queryParams['startDate'] ?? null, |
37 | 'endDate' => $queryParams['endDate'] ?? null |
38 | ]; |
39 | } |
40 | |
41 | private function validateClientData(object $data): array |
42 | { |
43 | return ValidationService::validateGetBookableFreeDays($data->officeIds, $data->serviceIds, $data->startDate, $data->endDate, $data->serviceCounts); |
44 | } |
45 | |
46 | private function getAvailableDays(object $data): AvailableDays|array |
47 | { |
48 | return ZmsApiFacadeService::getBookableFreeDays($data->officeIds, $data->serviceIds, $data->serviceCounts, $data->startDate, $data->endDate); |
49 | } |
50 | } |