PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.0.2
Booking for Appointments and Events Calendar – Amelia v2.0.2
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 / GetServiceDeleteEffectCommandHandler.php
ameliabooking / src / Application / Commands / Bookable / Service Last commit date
AddServiceCommand.php 6 months ago AddServiceCommandHandler.php 6 months ago DeleteServiceCommand.php 6 months ago DeleteServiceCommandHandler.php 6 months ago GetServiceCommand.php 6 months ago GetServiceCommandHandler.php 6 months ago GetServiceDeleteEffectCommand.php 1 year ago GetServiceDeleteEffectCommandHandler.php 6 months ago GetServicesCommand.php 6 months ago GetServicesCommandHandler.php 6 months ago UpdateServiceCommand.php 6 months ago UpdateServiceCommandHandler.php 6 months ago UpdateServiceStatusCommand.php 6 months ago UpdateServiceStatusCommandHandler.php 6 months ago UpdateServicesPositionsCommand.php 1 year ago UpdateServicesPositionsCommandHandler.php 1 year ago
GetServiceDeleteEffectCommandHandler.php
71 lines
1 <?php
2
3 namespace AmeliaBooking\Application\Commands\Bookable\Service;
4
5 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
6 use AmeliaBooking\Application\Services\Bookable\BookableApplicationService;
7 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
8 use AmeliaBooking\Domain\Entity\Entities;
9 use AmeliaBooking\Application\Commands\CommandResult;
10 use AmeliaBooking\Application\Commands\CommandHandler;
11 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
12 use Interop\Container\Exception\ContainerException;
13 use Slim\Exception\ContainerValueNotFoundException;
14
15 /**
16 * Class GetServiceDeleteEffectCommandHandler
17 *
18 * @package AmeliaBooking\Application\Commands\Bookable\Service
19 */
20 class GetServiceDeleteEffectCommandHandler extends CommandHandler
21 {
22 /**
23 * @param GetServiceDeleteEffectCommand $command
24 *
25 * @return CommandResult
26 * @throws ContainerValueNotFoundException
27 * @throws AccessDeniedException
28 * @throws QueryExecutionException
29 * @throws ContainerException
30 * @throws InvalidArgumentException
31 */
32 public function handle(GetServiceDeleteEffectCommand $command)
33 {
34 if (!$command->getPermissionService()->currentUserCanRead(Entities::SERVICES)) {
35 throw new AccessDeniedException('You are not allowed to read services');
36 }
37
38 $result = new CommandResult();
39
40 /** @var BookableApplicationService $bookableAS */
41 $bookableAS = $this->getContainer()->get('application.bookable.service');
42
43 $appointmentsCount = $bookableAS->getAppointmentsCountForServices([$command->getArg('id')]);
44
45 $messageKey = '';
46 $messageData = null;
47
48 if ($appointmentsCount['futureAppointments'] > 0) {
49 $messageKey = 'red_delete_service_effect_future';
50 $messageData = ['count' => $appointmentsCount['futureAppointments']];
51 } elseif ($appointmentsCount['packageAppointments']) {
52 $messageKey = 'red_delete_service_effect_package';
53 } elseif ($appointmentsCount['pastAppointments'] > 0) {
54 $messageKey = 'red_delete_service_effect_past';
55 $messageData = ['count' => $appointmentsCount['pastAppointments']];
56 }
57
58 $result->setResult(CommandResult::RESULT_SUCCESS);
59 $result->setMessage('Successfully retrieved message.');
60 $result->setData(
61 [
62 'valid' => $appointmentsCount['futureAppointments'] ? false : true,
63 'messageKey' => $messageKey,
64 'messageData' => $messageData,
65 ]
66 );
67
68 return $result;
69 }
70 }
71