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 / Booking / Event / UpdateEventStatusCommandHandler.php
ameliabooking / src / Application / Commands / Booking / Event Last commit date
AddEventCommand.php 1 year ago AddEventCommandHandler.php 1 year ago DeleteEventBookingCommand.php 7 years ago DeleteEventBookingCommandHandler.php 1 year ago DeleteEventCommand.php 1 year ago DeleteEventCommandHandler.php 2 years ago GetCalendarEventsCommand.php 1 year ago GetCalendarEventsCommandHandler.php 1 year ago GetEventBookingsCommand.php 1 year ago GetEventBookingsCommandHandler.php 1 year ago GetEventCommand.php 7 years ago GetEventCommandHandler.php 1 year ago GetEventDeleteEffectCommand.php 1 year ago GetEventDeleteEffectCommandHandler.php 1 year ago GetEventsCommand.php 1 year ago GetEventsCommandHandler.php 1 year ago UpdateEventBookingCommand.php 7 years ago UpdateEventBookingCommandHandler.php 1 year ago UpdateEventCommand.php 1 year ago UpdateEventCommandHandler.php 1 year ago UpdateEventStatusCommand.php 1 year ago UpdateEventStatusCommandHandler.php 1 year ago
UpdateEventStatusCommandHandler.php
98 lines
1 <?php
2
3 namespace AmeliaBooking\Application\Commands\Booking\Event;
4
5 use AmeliaBooking\Application\Commands\CommandHandler;
6 use AmeliaBooking\Application\Commands\CommandResult;
7 use AmeliaBooking\Application\Common\Exceptions\AccessDeniedException;
8 use AmeliaBooking\Application\Services\Booking\EventApplicationService;
9 use AmeliaBooking\Domain\Collection\Collection;
10 use AmeliaBooking\Domain\Common\Exceptions\InvalidArgumentException;
11 use AmeliaBooking\Domain\Entity\Booking\Event\Event;
12 use AmeliaBooking\Domain\Entity\Entities;
13 use AmeliaBooking\Infrastructure\Common\Exceptions\QueryExecutionException;
14 use AmeliaBooking\Infrastructure\Repository\Booking\Event\EventRepository;
15 use AmeliaBooking\Infrastructure\WP\Translations\BackendStrings;
16
17 /**
18 * Class UpdateEventStatusCommandHandler
19 *
20 * @package AmeliaBooking\Application\Commands\Booking\Event
21 */
22 class UpdateEventStatusCommandHandler extends CommandHandler
23 {
24 /**
25 * @var array
26 */
27 public $mandatoryFields = [
28 'status',
29 'applyGlobally'
30 ];
31
32 /**
33 * @param UpdateEventStatusCommand $command
34 *
35 * @return CommandResult
36 * @throws \Slim\Exception\ContainerException
37 * @throws \InvalidArgumentException
38 * @throws \Slim\Exception\ContainerValueNotFoundException
39 * @throws QueryExecutionException
40 * @throws InvalidArgumentException
41 * @throws AccessDeniedException
42 * @throws \Interop\Container\Exception\ContainerException
43 */
44 public function handle(UpdateEventStatusCommand $command)
45 {
46 if (!$command->getPermissionService()->currentUserCanWriteStatus(Entities::EVENTS)) {
47 throw new AccessDeniedException('You are not allowed to update event status');
48 }
49
50 $result = new CommandResult();
51
52 $this->checkMandatoryFields($command);
53
54 /** @var EventApplicationService $eventApplicationService */
55 $eventApplicationService = $this->container->get('application.booking.event.service');
56
57 /** @var EventRepository $eventRepository */
58 $eventRepository = $this->container->get('domain.booking.event.repository');
59
60 $requestedStatus = $command->getField('status');
61
62 /** @var Event $event */
63 $event = $eventRepository->getById((int)$command->getArg('id'));
64
65 $eventRepository->beginTransaction();
66
67 do_action('amelia_before_event_status_updated', $event ? $event->toArray() : null, $requestedStatus, $command->getField('applyGlobally'));
68
69 try {
70 /** @var Collection $updatedEvents */
71 $updatedEvents = $eventApplicationService->updateStatus(
72 $event,
73 $requestedStatus,
74 $command->getField('applyGlobally')
75 );
76 } catch (QueryExecutionException $e) {
77 $eventRepository->rollback();
78 throw $e;
79 }
80
81 $eventRepository->commit();
82
83 do_action('amelia_after_event_status_updated', $event ? $event->toArray() : null, $requestedStatus, $command->getField('applyGlobally'));
84
85 $result->setResult(CommandResult::RESULT_SUCCESS);
86 $result->setMessage('Successfully updated event status');
87 $result->setData(
88 [
89 'status' => $requestedStatus,
90 'message' => BackendStrings::getEventStrings()['event_status_changed'] . $requestedStatus,
91 Entities::EVENTS => $updatedEvents->toArray(),
92 ]
93 );
94
95 return $result;
96 }
97 }
98