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 / GetServiceDeleteEffectCommandHandler.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
GetServiceDeleteEffectCommandHandler.php
73 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 $message = '';
46
47 if ($appointmentsCount['futureAppointments'] > 0) {
48 $appointmentString = $appointmentsCount['futureAppointments'] === 1 ? 'appointment' : 'appointments';
49
50 $message = "Could not delete service.
51 This service has {$appointmentsCount['futureAppointments']} {$appointmentString} in the future.";
52 } elseif ($appointmentsCount['packageAppointments']) {
53 $message = "This service is available for booking in purchased package.
54 Are you sure you want to delete this service?";
55 } elseif ($appointmentsCount['pastAppointments'] > 0) {
56 $appointmentString = $appointmentsCount['pastAppointments'] === 1 ? 'appointment' : 'appointments';
57
58 $message = "This service has {$appointmentsCount['pastAppointments']} {$appointmentString} in the past.";
59 }
60
61 $result->setResult(CommandResult::RESULT_SUCCESS);
62 $result->setMessage('Successfully retrieved message.');
63 $result->setData(
64 [
65 'valid' => $appointmentsCount['futureAppointments'] ? false : true,
66 'message' => $message
67 ]
68 );
69
70 return $result;
71 }
72 }
73