src/EventSubscriber/InsuredSubscriber.php line 61

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Core\EventListener\EventPriorities;
  4. use App\Entity\Insured;
  5. use App\Message\CreateInsuredLimits;
  6. use App\Message\UpdateInsuredLimits;
  7. use App\Message\SendNewInsuredNotification;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. // use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  11. use Symfony\Component\HttpKernel\Event\ViewEvent;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. use Symfony\Component\Messenger\MessageBusInterface;
  14. // use App\Entity\User;
  15. final class InsuredSubscriber implements EventSubscriberInterface
  16. {
  17.     public function __construct(
  18.         // TokenStorageInterface $tokenStorage,
  19.         private readonly MessageBusInterface $messageBus
  20.     ) {}
  21.     public static function getSubscribedEvents(): array
  22.     {
  23.         return [
  24.             KernelEvents::VIEW => [
  25.                 ['createInsuredLimits'EventPriorities::POST_WRITE],
  26.                 ['updateInsuredLimits'EventPriorities::POST_WRITE],
  27.                 ['sendNewInsuredNotification'EventPriorities::POST_WRITE],
  28.             ],
  29.         ];
  30.     }
  31.     public function createInsuredLimits(ViewEvent $event): void
  32.     {
  33.         $insured $event->getControllerResult();
  34.         $method $event->getRequest()->getMethod();
  35.         if (!$insured instanceof Insured || Request::METHOD_POST !== $method) {
  36.             return;
  37.         }
  38.         // $token = $this->tokenStorage->getToken();
  39.         // if (!$token) {
  40.         //     return;
  41.         // }
  42.         // $user = $token->getUser();
  43.         // if (!$user instanceof User) {
  44.         //     return;
  45.         // }
  46.         $message = new CreateInsuredLimits();
  47.         $message->setInsuredId($insured->getId());
  48.         $this->messageBus->dispatch($message);
  49.     }
  50.     public function updateInsuredLimits(ViewEvent $event): void
  51.     {
  52.         $insured $event->getControllerResult();
  53.         $method $event->getRequest()->getMethod();
  54.         if (!$insured instanceof Insured || Request::METHOD_PUT !== $method) {
  55.             return;
  56.         }
  57.         // $token = $this->tokenStorage->getToken();
  58.         // if (!$token) {
  59.         //     return;
  60.         // }
  61.         // $user = $token->getUser();
  62.         // if (!$user instanceof User) {
  63.         //     return;
  64.         // }
  65.         $message = new UpdateInsuredLimits();
  66.         $message->setInsuredId($insured->getId());
  67.         $this->messageBus->dispatch($message);
  68.     }
  69.     public function sendNewInsuredNotification(ViewEvent $event): void
  70.     {
  71.         $insured $event->getControllerResult();
  72.         $method $event->getRequest()->getMethod();
  73.         if (!$insured instanceof Insured || Request::METHOD_POST !== $method) {
  74.             return;
  75.         }
  76.         // $token = $this->tokenStorage->getToken();
  77.         // if (!$token) {
  78.         //     return;
  79.         // }
  80.         // $user = $token->getUser();
  81.         // if (!$user instanceof User) {
  82.         //     return;
  83.         // }
  84.         $message = new SendNewInsuredNotification();
  85.         $message->setInsuredId($insured->getId());
  86.         $this->messageBus->dispatch($message);
  87.     }
  88. }