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 / DeleteServiceCommandHandler.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
DeleteServiceCommandHandler.php
94 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\Application\Common\Exceptions\AccessDeniedException;
13 use AmeliaBooking\Application\Services\Bookable\BookableApplicationService;
14 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
15 use AmeliaBooking\Domain\Entity\Bookable\Service\Service;
16 use AmeliaBooking\Domain\Entity\Entities;
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 DeleteServiceCommandHandler
24 *
25 * @package AmeliaBooking\Application\Commands\Bookable\Service
26 */
27 class DeleteServiceCommandHandler extends CommandHandler
28 {
29 /**
30 * @param DeleteServiceCommand $command
31 *
32 * @return CommandResult
33 * @throws ContainerValueNotFoundException
34 * @throws InvalidArgumentException
35 * @throws QueryExecutionException
36 * @throws AccessDeniedException
37 * @throws ContainerException
38 */
39 public function handle(DeleteServiceCommand $command)
40 {
41 if (!$command->getPermissionService()->currentUserCanDelete(Entities::SERVICES)) {
42 throw new AccessDeniedException('You are not allowed to delete services.');
43 }
44
45 $result = new CommandResult();
46
47 $this->checkMandatoryFields($command);
48
49 /** @var BookableApplicationService $bookableApplicationService */
50 $bookableApplicationService = $this->getContainer()->get('application.bookable.service');
51
52 $appointmentsCount = $bookableApplicationService->getAppointmentsCountForServices([$command->getArg('id')]);
53
54 /** @var ServiceRepository $serviceRepository */
55 $serviceRepository = $this->container->get('domain.bookable.service.repository');
56
57 /** @var Service $service */
58 $service = $serviceRepository->getByCriteria(
59 ['services' => [$command->getArg('id')]]
60 )->getItem($command->getArg('id'));
61
62 if ($appointmentsCount['futureAppointments']) {
63 $result->setResult(CommandResult::RESULT_CONFLICT);
64 $result->setMessage('Could not delete service.');
65 $result->setData([]);
66
67 return $result;
68 }
69
70 $serviceRepository->beginTransaction();
71
72 do_action('amelia_before_service_deleted', $service->toArray());
73
74 if (!$bookableApplicationService->deleteService($service)) {
75 $serviceRepository->rollback();
76
77 $result->setResult(CommandResult::RESULT_ERROR);
78 $result->setMessage('Could not delete service.');
79
80 return $result;
81 }
82
83 $serviceRepository->commit();
84
85 do_action('amelia_after_service_deleted', $service->toArray());
86
87 $result->setResult(CommandResult::RESULT_SUCCESS);
88 $result->setMessage('Successfully deleted service.');
89 $result->setData([]);
90
91 return $result;
92 }
93 }
94