getContainer()->get('logged.in.user') === null || !$this->getContainer()->getPermissionsService()->currentUserCanDelete(Entities::EVENTS)) { throw new AccessDeniedException('You are not allowed to delete event bookings'); } $result = new CommandResult(); /** @var CustomerBookingRepository $customerBookingRepository */ $customerBookingRepository = $this->container->get('domain.booking.customerBooking.repository'); /** @var EventRepository $eventRepository */ $eventRepository = $this->container->get('domain.booking.event.repository'); /** @var CustomerBooking $customerBooking */ $customerBooking = $customerBookingRepository->getById((int)$command->getField('id')); $customerBooking->setStatus(new BookingStatus(BookingStatus::REJECTED)); if (!$customerBooking instanceof CustomerBooking) { $result->setResult(CommandResult::RESULT_ERROR); $result->setMessage('Could not delete booking'); return $result; } /** @var Collection $events */ $events = $eventRepository->getByBookingIds([$customerBooking->getId()->getValue()]); /** @var Event $event */ $event = $events->getItem($events->keys()[0]); $customerBookingRepository->delete($customerBooking->getId()->getValue()); if ($customerBooking->getStatus()->getValue() === BookingStatus::REJECTED) { $event->setNotifyParticipants(false); } $result->setResult(CommandResult::RESULT_SUCCESS); $result->setMessage('Successfully deleted event booking'); $result->setData([ 'type' => Entities::EVENT, Entities::EVENT => $event->toArray(), Entities::BOOKING => $customerBooking->toArray(), 'appointmentStatusChanged' => false ]); return $result; } }