<?php
namespace App\EventSubscriber;
use ApiPlatform\Core\EventListener\EventPriorities;
use App\Entity\Submodality;
use App\Message\CreateInsurerLimitsBySubmodality;
use App\Message\UpdateInsurerLimitsBySubmodality;
use App\Message\CreateInsuredLimitsBySubmodality;
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 SubmodalitySubscriber implements EventSubscriberInterface
{
public function __construct(
// TokenStorageInterface $tokenStorage,
MessageBusInterface $messageBus,
)
{
// $this->tokenStorage = $tokenStorage;
$this->messageBus = $messageBus;
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::VIEW => [
['createInsurerLimits', EventPriorities::POST_WRITE],
['updateInsurerLimits', EventPriorities::POST_WRITE],
['createInsuredLimits', EventPriorities::POST_WRITE],
],
];
}
public function createInsurerLimits(ViewEvent $event): void
{
$submodality = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if (!$submodality instanceof Submodality || Request::METHOD_POST !== $method) {
return;
}
// $token = $this->tokenStorage->getToken();
// if (!$token) {
// return;
// }
// $user = $token->getUser();
// if (!$user instanceof User) {
// return;
// }
$message = new CreateInsurerLimitsBySubmodality();
$message->setSubmodalityId($submodality->getId());
$this->messageBus->dispatch($message);
}
public function updateInsurerLimits(ViewEvent $event): void
{
$submodality = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if (!$submodality instanceof Submodality || Request::METHOD_PUT !== $method) {
return;
}
// $token = $this->tokenStorage->getToken();
// if (!$token) {
// return;
// }
// $user = $token->getUser();
// if (!$user instanceof User) {
// return;
// }
$message = new UpdateInsurerLimitsBySubmodality();
$message->setSubmodalityId($submodality->getId());
$this->messageBus->dispatch($message);
}
public function createInsuredLimits(ViewEvent $event): void
{
$submodality = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if (!$submodality instanceof Submodality || Request::METHOD_POST !== $method) {
return;
}
// $token = $this->tokenStorage->getToken();
// if (!$token) {
// return;
// }
// $user = $token->getUser();
// if (!$user instanceof User) {
// return;
// }
$message = new CreateInsuredLimitsBySubmodality();
$message->setSubmodalityId($submodality->getId());
$this->messageBus->dispatch($message);
}
}