PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Application / Commands / Bookable / Service / GetServicesCommandHandler.php
ameliabooking / src / Application / Commands / Bookable / Service Last commit date
AddServiceCommand.php 7 years ago AddServiceCommandHandler.php 2 years ago DeleteServiceCommand.php 7 years ago DeleteServiceCommandHandler.php 2 years ago GetServiceCommand.php 7 years ago GetServiceCommandHandler.php 2 years ago GetServiceDeleteEffectCommand.php 7 years ago GetServiceDeleteEffectCommandHandler.php 2 years ago GetServicesCommand.php 7 years ago GetServicesCommandHandler.php 2 years ago UpdateServiceCommand.php 7 years ago UpdateServiceCommandHandler.php 2 years ago UpdateServiceStatusCommand.php 7 years ago UpdateServiceStatusCommandHandler.php 2 years ago UpdateServicesPositionsCommand.php 7 years ago UpdateServicesPositionsCommandHandler.php 2 years ago
GetServicesCommandHandler.php
94 lines
1 <?php
2 /**
3 * @copyright © TMS-Plugins. All rights reserved.
4 * @licence See LICENCE.md for license details.
5 */
6
7 namespace AmeliaBooking\Application\Commands\Bookable\Service;
8
9 use AmeliaBooking\Application\Commands\CommandHandler;
10 use AmeliaBooking\Application\Commands\CommandResult;
11 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
12 use AmeliaBooking\Domain\Collection\Collection;
13 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
14 use AmeliaBooking\Domain\Entity\Bookable\Service\Service;
15 use AmeliaBooking\Domain\Entity\Entities;
16 use AmeliaBooking\Domain\Services\Settings\SettingsService;
17 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
18 use AmeliaBooking\Infrastructure\Repository\Bookable\Service\ServiceRepository;
19 use Interop\Container\Exception\ContainerException;
20 use Slim\Exception\ContainerValueNotFoundException;
21
22 /**
23 * Class GetServicesCommandHandler
24 *
25 * @package AmeliaBooking\Application\Commands\Bookable\Service
26 */
27 class GetServicesCommandHandler extends CommandHandler
28 {
29 /**
30 * @param GetServicesCommand $command
31 *
32 * @return CommandResult
33 * @throws ContainerValueNotFoundException
34 * @throws QueryExecutionException
35 * @throws InvalidArgumentException
36 * @throws AccessDeniedException
37 * @throws ContainerException
38 */
39 public function handle(GetServicesCommand $command)
40 {
41 if (!$command->getPermissionService()->currentUserCanRead(Entities::SERVICES)) {
42 throw new AccessDeniedException('You are not allowed to read services.');
43 }
44
45 $result = new CommandResult();
46
47 $this->checkMandatoryFields($command);
48
49 /** @var ServiceRepository $serviceRepository */
50 $serviceRepository = $this->container->get('domain.bookable.service.repository');
51
52 /** @var SettingsService $settingsService */
53 $settingsService = $this->getContainer()->get('domain.settings.service');
54
55 $generalSettings = $settingsService->getCategorySettings('general');
56
57 /** @var Collection $services */
58 $services = $serviceRepository->getFiltered(
59 array_merge(
60 $command->getField('params'),
61 [
62 'sort' => $generalSettings['sortingServices']
63 ]
64 ),
65 $generalSettings['servicesPerPage']
66 );
67
68 /** @var Service $service */
69 foreach ($services->getItems() as $service) {
70 if ($service->getSettings() && json_decode($service->getSettings()->getValue(), true) === null) {
71 $service->setSettings(null);
72 }
73 }
74
75 $servicesArray = $services->toArray();
76
77 $servicesArray = apply_filters('amelia_get_services_filter', $servicesArray);
78
79 do_action('amelia_get_services', $servicesArray);
80
81 $result->setResult(CommandResult::RESULT_SUCCESS);
82 $result->setMessage('Successfully retrieved services.');
83 $result->setData(
84 [
85 Entities::SERVICES => $servicesArray,
86 'countFiltered' => (int)$serviceRepository->getCount($command->getField('params')),
87 'countTotal' => (int)$serviceRepository->getCount([]),
88 ]
89 );
90
91 return $result;
92 }
93 }
94