PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.31
Booking for Appointments and Events Calendar – Amelia v1.2.31
2.4.5 2.4.4 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 / GetServiceCommandHandler.php
ameliabooking / src / Application / Commands / Bookable / Service Last commit date
AddServiceCommand.php 1 year ago AddServiceCommandHandler.php 1 year ago DeleteServiceCommand.php 1 year ago DeleteServiceCommandHandler.php 1 year ago GetServiceCommand.php 1 year ago GetServiceCommandHandler.php 1 year ago GetServiceDeleteEffectCommand.php 1 year ago GetServiceDeleteEffectCommandHandler.php 2 years ago GetServicesCommand.php 1 year ago GetServicesCommandHandler.php 1 year ago UpdateServiceCommand.php 1 year ago UpdateServiceCommandHandler.php 1 year ago UpdateServiceStatusCommand.php 1 year ago UpdateServiceStatusCommandHandler.php 1 year ago UpdateServicesPositionsCommand.php 1 year ago UpdateServicesPositionsCommandHandler.php 1 year ago
GetServiceCommandHandler.php
92 lines
1 <?php
2
3 /**
4 * @copyright © TMS-Plugins. All rights reserved.
5 * @licence See LICENCE.md for license details.
6 */
7
8 namespace AmeliaBooking\Application\Commands\Bookable\Service;
9
10 use AmeliaBooking\Application\Commands\CommandHandler;
11 use AmeliaBooking\Application\Commands\CommandResult;
12 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
13 use AmeliaBooking\Domain\Entity\Bookable\Service\Service;
14 use AmeliaBooking\Domain\Entity\Entities;
15 use AmeliaBooking\Domain\Services\DateTime\DateTimeService;
16 use AmeliaBooking\Domain\Services\Settings\SettingsService;
17 use AmeliaBooking\Domain\ValueObjects\Json;
18 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
19 use AmeliaBooking\Infrastructure\Repository\Bookable\Service\ServiceRepository;
20 use AmeliaBooking\Infrastructure\Repository\Booking\Appointment\AppointmentRepository;
21 use Slim\Exception\ContainerValueNotFoundException;
22
23 /**
24 * Class GetServiceCommandHandler
25 *
26 * @package AmeliaBooking\Application\Commands\Bookable\Service
27 */
28 class GetServiceCommandHandler extends CommandHandler
29 {
30 /**
31 * @param GetServiceCommand $command
32 *
33 * @return CommandResult
34 * @throws ContainerValueNotFoundException
35 * @throws QueryExecutionException
36 * @throws InvalidArgumentException
37 */
38 public function handle(GetServiceCommand $command)
39 {
40 $result = new CommandResult();
41
42 /** @var ServiceRepository $serviceRepository */
43 $serviceRepository = $this->container->get('domain.bookable.service.repository');
44
45 /** @var AppointmentRepository $appointmentRepository */
46 $appointmentRepository = $this->container->get('domain.booking.appointment.repository');
47
48 /** @var Service $service */
49 $service = $serviceRepository->getByCriteria(
50 ['services' => [$command->getArg('id')]]
51 )->getItem($command->getArg('id'));
52
53 // fix for wrongly saved JSON
54 if (
55 $service->getSettings() &&
56 json_decode($service->getSettings()->getValue(), true) === null
57 ) {
58 $service->setSettings(null);
59 }
60
61 if ($service->getSettings()) {
62 /** @var SettingsService $settingsDS */
63 $settingsDS = $this->container->get('domain.settings.service');
64
65 $service->setSettings(new Json(json_encode($settingsDS->getSavedSettings($service->getSettings()))));
66 }
67
68 $futureAppointmentsProvidersIds = $appointmentRepository->getFutureAppointmentsProvidersIds(
69 [$service->getId()->getValue()],
70 DateTimeService::getNowDateTime(),
71 null
72 );
73
74 $serviceArray = $service->toArray();
75
76 $serviceArray = apply_filters('amelia_get_service_filter', $serviceArray);
77
78 do_action('amelia_get_service', $serviceArray);
79
80 $result->setResult(CommandResult::RESULT_SUCCESS);
81 $result->setMessage('Successfully retrieved service.');
82 $result->setData(
83 [
84 Entities::SERVICE => $serviceArray,
85 'futureAppointmentsProvidersIds' => $futureAppointmentsProvidersIds,
86 ]
87 );
88
89 return $result;
90 }
91 }
92