src/EventSubscriber/SiteSubscriber.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Symfony\EventListener\EventPriorities;
  4. use App\Entity\Document;
  5. use App\Entity\Site;
  6. use App\Evaluation\EvaluationPrepare;
  7. use App\Repository\SiteRepository;
  8. use App\Services\SiteService;
  9. use App\Command\PropagateSiteAccessCommand;
  10. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\HttpKernel\Event\RequestEvent;
  13. use Symfony\Component\HttpKernel\Event\ViewEvent;
  14. use Symfony\Component\HttpKernel\KernelEvents;
  15. use Symfony\Component\Security\Core\Security;
  16. use Psr\Log\LoggerInterface;
  17. final class SiteSubscriber implements EventSubscriberInterface
  18. {
  19.     public function __construct(
  20.         private EvaluationPrepare $evaluationPrepare,
  21.         private Security $security,
  22.         private readonly ParameterBagInterface $parameterBag,
  23.         private SiteService $siteService,
  24.         private PropagateSiteAccessCommand $propagateSiteAccessCommand,
  25.         private SiteRepository $siteRepository
  26.     )
  27.     {
  28.         $this->security $security;
  29.     }
  30.     public static function getSubscribedEvents()
  31.     {
  32.         return [
  33.             KernelEvents::VIEW => ['prepareSite'EventPriorities::POST_WRITE],
  34.         ];
  35.     }
  36.     public function prepareSite(ViewEvent $event): void
  37.     {
  38.         $method $event->getRequest()->getMethod();
  39.         $site $event->getControllerResult();
  40.         if (!$site instanceof Site) {
  41.             return;
  42.         }
  43.         
  44.         try {
  45.             if ($method === 'POST') {
  46.                 $customer $site->getCustomer()->getId();
  47.                 if ($customer === 355) {
  48.                 $sitePath $site->getPath();
  49.                     if (isset($sitePath[2]) && $sitePath[2] === 'DIL') {
  50.                         $siteToProcess $this->siteRepository->findOneByCode($sitePath[1]);
  51.                         $siteToProcessId $siteToProcess $siteToProcess->getId() : null;
  52.                         $this->propagateSiteAccessCommand->propagate($siteToProcessId);
  53.                     }
  54.                     elseif (isset($sitePath[2]) && substr($sitePath[2], 03) === 'GMR') {
  55.                         $parentSiteToProcess $this->siteRepository->findOneByCode($sitePath[2]);
  56.                         $siteToProcess $this->siteRepository->findOneByCode($sitePath[1]);
  57.                         $siteToProcessId $siteToProcess $siteToProcess->getId() : null;
  58.                         $parentSiteToProcessId $parentSiteToProcess $parentSiteToProcess->getId() : null;
  59.                         $this->propagateSiteAccessCommand->propagate($parentSiteToProcessId);
  60.                         $this->propagateSiteAccessCommand->propagate($siteToProcessId);
  61.                     }
  62.                 }
  63.             } elseif ($method === 'PUT') {
  64.                 $paramsArray  json_decode($event->getRequest()->getContent(), true);
  65.                 $docsIds $paramsArray['docsIds'] ?? false;
  66.                 $idUser $paramsArray['idUser'] ?? false;
  67.                 if($docsIds) {
  68.                     $this->siteService->siteAffectationDoc($site$docsIds$idUser);
  69.                 }
  70.             }
  71.         } catch (\Throwable $throwable) {
  72.             header('Access-Control-Allow-Origin: *');
  73.             dd($throwable->getMessage());
  74.         }
  75.     }
  76. }