PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.4
Booking for Appointments and Events Calendar – Amelia v1.2.4
2.4.9 2.4.8 2.4.7 2.4.6 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 1 year 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
90 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\Domain\Common\Exceptions\InvalidArgumentException;
12 use AmeliaBooking\Domain\Entity\Bookable\Service\Service;
13 use AmeliaBooking\Domain\Entity\Entities;
14 use AmeliaBooking\Domain\Services\DateTime\DateTimeService;
15 use AmeliaBooking\Domain\Services\Settings\SettingsService;
16 use AmeliaBooking\Domain\ValueObjects\Json;
17 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
18 use AmeliaBooking\Infrastructure\Repository\Bookable\Service\ServiceRepository;
19 use AmeliaBooking\Infrastructure\Repository\Booking\Appointment\AppointmentRepository;
20 use Slim\Exception\ContainerValueNotFoundException;
21
22 /**
23 * Class GetServiceCommandHandler
24 *
25 * @package AmeliaBooking\Application\Commands\Bookable\Service
26 */
27 class GetServiceCommandHandler extends CommandHandler
28 {
29 /**
30 * @param GetServiceCommand $command
31 *
32 * @return CommandResult
33 * @throws ContainerValueNotFoundException
34 * @throws QueryExecutionException
35 * @throws InvalidArgumentException
36 */
37 public function handle(GetServiceCommand $command)
38 {
39 $result = new CommandResult();
40
41 /** @var ServiceRepository $serviceRepository */
42 $serviceRepository = $this->container->get('domain.bookable.service.repository');
43
44 /** @var AppointmentRepository $appointmentRepository */
45 $appointmentRepository = $this->container->get('domain.booking.appointment.repository');
46
47 /** @var Service $service */
48 $service = $serviceRepository->getByCriteria(
49 ['services' => [$command->getArg('id')]]
50 )->getItem($command->getArg('id'));
51
52 // fix for wrongly saved JSON
53 if ($service->getSettings() &&
54 json_decode($service->getSettings()->getValue(), true) === null
55 ) {
56 $service->setSettings(null);
57 }
58
59 if ($service->getSettings()) {
60 /** @var SettingsService $settingsDS */
61 $settingsDS = $this->container->get('domain.settings.service');
62
63 $service->setSettings(new Json(json_encode($settingsDS->getSavedSettings($service->getSettings()))));
64 }
65
66 $futureAppointmentsProvidersIds = $appointmentRepository->getFutureAppointmentsProvidersIds(
67 [$service->getId()->getValue()],
68 DateTimeService::getNowDateTime(),
69 null
70 );
71
72 $serviceArray = $service->toArray();
73
74 $serviceArray = apply_filters('amelia_get_service_filter', $serviceArray);
75
76 do_action('amelia_get_service', $serviceArray);
77
78 $result->setResult(CommandResult::RESULT_SUCCESS);
79 $result->setMessage('Successfully retrieved service.');
80 $result->setData(
81 [
82 Entities::SERVICE => $serviceArray,
83 'futureAppointmentsProvidersIds' => $futureAppointmentsProvidersIds,
84 ]
85 );
86
87 return $result;
88 }
89 }
90