<?phpnamespace App\EventSubscriber;use ApiPlatform\Core\EventListener\EventPriorities;use App\Entity\Insured;use App\Message\CreateInsuredLimits;use App\Message\UpdateInsuredLimits;use App\Message\SendNewInsuredNotification;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\Request;// use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;use Symfony\Component\HttpKernel\Event\ViewEvent;use Symfony\Component\HttpKernel\KernelEvents;use Symfony\Component\Messenger\MessageBusInterface;// use App\Entity\User;final class InsuredSubscriber implements EventSubscriberInterface{ public function __construct( // TokenStorageInterface $tokenStorage, private readonly MessageBusInterface $messageBus ) {} public static function getSubscribedEvents(): array { return [ KernelEvents::VIEW => [ ['createInsuredLimits', EventPriorities::POST_WRITE], ['updateInsuredLimits', EventPriorities::POST_WRITE], ['sendNewInsuredNotification', EventPriorities::POST_WRITE], ], ]; } public function createInsuredLimits(ViewEvent $event): void { $insured = $event->getControllerResult(); $method = $event->getRequest()->getMethod(); if (!$insured instanceof Insured || Request::METHOD_POST !== $method) { return; } // $token = $this->tokenStorage->getToken(); // if (!$token) { // return; // } // $user = $token->getUser(); // if (!$user instanceof User) { // return; // } $message = new CreateInsuredLimits(); $message->setInsuredId($insured->getId()); $this->messageBus->dispatch($message); } public function updateInsuredLimits(ViewEvent $event): void { $insured = $event->getControllerResult(); $method = $event->getRequest()->getMethod(); if (!$insured instanceof Insured || Request::METHOD_PUT !== $method) { return; } // $token = $this->tokenStorage->getToken(); // if (!$token) { // return; // } // $user = $token->getUser(); // if (!$user instanceof User) { // return; // } $message = new UpdateInsuredLimits(); $message->setInsuredId($insured->getId()); $this->messageBus->dispatch($message); } public function sendNewInsuredNotification(ViewEvent $event): void { $insured = $event->getControllerResult(); $method = $event->getRequest()->getMethod(); if (!$insured instanceof Insured || Request::METHOD_POST !== $method) { return; } // $token = $this->tokenStorage->getToken(); // if (!$token) { // return; // } // $user = $token->getUser(); // if (!$user instanceof User) { // return; // } $message = new SendNewInsuredNotification(); $message->setInsuredId($insured->getId()); $this->messageBus->dispatch($message); }}