PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.6
Booking for Appointments and Events Calendar – Amelia v2.4.6
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 / UpdateServiceStatusCommandHandler.php
ameliabooking / src / Application / Commands / Bookable / Service Last commit date
AddServiceCommand.php 7 months ago AddServiceCommandHandler.php 7 months ago DeleteServiceCommand.php 7 months ago DeleteServiceCommandHandler.php 4 weeks ago GetServiceCommand.php 7 months ago GetServiceCommandHandler.php 7 months ago GetServiceDeleteEffectCommand.php 1 year ago GetServiceDeleteEffectCommandHandler.php 4 weeks ago GetServicesCommand.php 7 months ago GetServicesCommandHandler.php 1 month ago UpdateServiceCommand.php 7 months ago UpdateServiceCommandHandler.php 7 months ago UpdateServiceStatusCommand.php 7 months ago UpdateServiceStatusCommandHandler.php 4 weeks ago UpdateServicesPositionsCommand.php 1 year ago UpdateServicesPositionsCommandHandler.php 1 year ago
UpdateServiceStatusCommandHandler.php
76 lines
1 <?php
2
3 /**
4 * @copyright © Melograno Ventures. 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\Domain\Common\Exceptions\InvalidArgumentException;
14 use AmeliaBooking\Domain\Entity\Entities;
15 use AmeliaBooking\Infrastructure\Common\Exceptions\NotFoundException;
16 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
17 use AmeliaBooking\Infrastructure\Repository\Bookable\Service\ServiceRepository;
18
19 /**
20 * Class UpdateServiceStatusCommandHandler
21 *
22 * @package AmeliaBooking\Application\Commands\Bookable\Service
23 */
24 class UpdateServiceStatusCommandHandler extends CommandHandler
25 {
26 /**
27 * @var array
28 */
29 public $mandatoryFields = [
30 'status',
31 ];
32
33 /**
34 * @param UpdateServiceStatusCommand $command
35 *
36 * @return CommandResult
37 * @throws \Slim\Exception\ContainerValueNotFoundException
38 * @throws InvalidArgumentException
39 * @throws AccessDeniedException
40 * @throws NotFoundException
41 * @throws QueryExecutionException
42 */
43 public function handle(UpdateServiceStatusCommand $command)
44 {
45 if (!$command->getPermissionService()->currentUserCanWrite(Entities::SERVICES)) {
46 throw new AccessDeniedException('You are not allowed to update service.');
47 }
48
49 $result = new CommandResult();
50
51 $this->checkMandatoryFields($command);
52
53 /** @var ServiceRepository $serviceRepository */
54 $serviceRepository = $this->container->get('domain.bookable.service.repository');
55
56 // Ensure the service exists before updating its status.
57 $serviceRepository->getById((int)$command->getArg('id'));
58
59 do_action('amelia_before_service_status_updated', $command->getArg('id'), $command->getField('status'));
60
61 $serviceRepository->updateFieldById(
62 $command->getArg('id'),
63 $command->getField('status'),
64 'status'
65 );
66
67 do_action('amelia_after_service_status_updated', $command->getArg('id'), $command->getField('status'));
68
69 $result->setResult(CommandResult::RESULT_SUCCESS);
70 $result->setMessage('Successfully updated service');
71 $result->setData(true);
72
73 return $result;
74 }
75 }
76