getContainer()->getPermissionsService()->currentUserCanWriteStatus(Entities::EVENT)) { throw new AccessDeniedException('You are not allowed to update booking'); } $result = new CommandResult(); $this->checkMandatoryFields($command); /** @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')); /** @var Collection $events */ $events = $eventRepository->getByBookingIds([$customerBooking->getId()->getValue()]); /** @var Event $event */ $event = $events->getItem($events->keys()[0]); if (!$customerBooking instanceof CustomerBooking) { $result->setResult(CommandResult::RESULT_ERROR); $result->setMessage('Could not update booking'); return $result; } $customerBooking->setStatus(new BookingStatus($command->getField('status'))); $customerBookingRepository->update($customerBooking->getId()->getValue(), $customerBooking); $result->setResult(CommandResult::RESULT_SUCCESS); $result->setMessage('Successfully booking'); $result->setData([ 'type' => Entities::EVENT, Entities::EVENT => $event->toArray(), Entities::BOOKING => $customerBooking->toArray(), 'appointmentStatusChanged' => false ]); return $result; } }