src/EventListener/PortalUserEventListener.php line 40

Open in your IDE?
  1. <?php
  2.     namespace App\EventListener;
  3.     use App\Event\PortalUserEvent;
  4.     use App\Services\Portal\PortalService;
  5.     use Exception;
  6.     use Psr\Log\LoggerInterface;
  7.     use Symfony\Component\HttpFoundation\Response;
  8.     /**
  9.      * Classe PortalUserEventListener
  10.      * Cette classe est responsable de l'écoute des événements liés aux utilisateurs du portail.
  11.      */
  12.     class PortalUserEventListener
  13.     {
  14.         /**
  15.          * @var PortalService $portalService
  16.          * Service pour gérer les opérations liées au portail.
  17.          */
  18.         private PortalService $portalService;
  19.         private LoggerInterface $logger;
  20.         public function __construct(PortalService $portalServiceLoggerInterface $logger)
  21.         {
  22.             $this->portalService $portalService;
  23.             $this->logger        $logger;
  24.         }
  25.         /**
  26.          * Méthode pour gérer la création ou la mise à jour des utilisateurs du portail.
  27.          *
  28.          * @param PortalUserEvent $event L'événement contenant les informations de l'utilisateur.
  29.          *
  30.          * @throws Exception
  31.          */
  32.         public function onPortalUserCreateOrUpdate(PortalUserEvent $event): void
  33.         {
  34.             if($this->portalService->isOnPortal())
  35.             {
  36.                 // Split le tableau en pack de 200 utilisateurs
  37.                 $chunks array_chunk($event->getUsers(), 150);
  38.                 foreach ($chunks as $users)
  39.                 {
  40.                     if ($this->portalService->isAParent())
  41.                     {
  42.                         // Envoyer les utilisateurs mis à jour au référent
  43.                         $response $this->portalService->sendUpdatedUserToReferent($users);
  44.                         if ($response->getStatusCode() !== Response::HTTP_OK && $response->getStatusCode() !== Response::HTTP_CREATED)
  45.                         {
  46.                             $this->logger->error(
  47.                                     'Erreur lors de la mise à jour utilisateur sur le site référent',
  48.                                     [
  49.                                             'response' => json_decode($response->getContent(), TRUE) ?? $response->getContent(),
  50.                                     ]
  51.                             );
  52.                         }
  53.                         $this->portalService->createOrUpdateUserOnNanReferentUrls($users);
  54.                     } else {
  55.                         // Si le service du portail est un parent
  56.                         $isNew $event->isNew();
  57.                         // Envoyer l'utilisateur mis à jour au portail
  58.                         $response $this->portalService->sendUpdatedUserToPortal($users$isNew$event->getNewStatus(), $event->getOldStatus());
  59.                         if ($response->getStatusCode() !== Response::HTTP_OK && $response->getStatusCode() !== Response::HTTP_CREATED) {
  60.                             $this->logger->error(
  61.                                     'Erreur lors de la mise à jour de l\'utilisateur sur le portail',
  62.                                     [
  63.                                             'response' => json_decode($response->getContent(), TRUE) ?? $response->getContent(),
  64.                                     ]
  65.                             );
  66.                         }
  67.                     }
  68.                 }
  69.             }
  70.         }
  71.     }