src/EventListener/DesignationListener.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\ActionLog;
  4. use App\Manager\DesignationManager;
  5. use App\Service\ActionLogService;
  6. use App\Service\ControlService;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Pimcore\Event\Model\DataObjectEvent;
  9. use Psr\Log\LoggerInterface;
  10. use Symfony\Contracts\HttpClient\HttpClientInterface;
  11. class DesignationListener
  12. {
  13.     private HttpClientInterface $client;
  14.     private DesignationManager $designationManager;
  15.     private LoggerInterface $logger;
  16.     private $shercoNetworkSync;
  17.     private ActionLogService $actionLogService;
  18.     private ControlService $controlService;
  19.     private $managerRegistry;
  20.     public function __construct($shercoNetworkSyncHttpClientInterface $clientDesignationManager $designationManager,
  21.                                 LoggerInterface $loggerActionLogService $actionLogServiceControlService $controlServiceManagerRegistry $managerRegistry)
  22.     {
  23.         $this->shercoNetworkSync $shercoNetworkSync;
  24.         $this->client $client;
  25.         $this->designationManager $designationManager;
  26.         $this->logger $logger;
  27.         $this->actionLogService $actionLogService;
  28.         $this->controlService $controlService;
  29.         $this->managerRegistry $managerRegistry;
  30.     }
  31.     public function onDesignationPostAdd(DataObjectEvent $o)
  32.     {
  33.         $designation $o->getObject();
  34.         if ($this->designationManager->objectIsDesignation($designation)) {
  35.             $type 'designation';
  36.             if ($designation->getType() != 'folder') {
  37.                 if ($designation->get("o_className") == "Designation") {
  38.                     $statut $designation->isPublished() ? 'valide' 'en-cours';
  39.                     $this->actionLogService->logActionDesignation($o'add'$type$statut);
  40.                 }
  41.             }
  42.         }
  43.     }
  44.     public function onDesignationPostUpdate(DataObjectEvent $o)
  45.     {
  46.         $designation $o->getObject();
  47.         if ($designation->getType() != 'folder') {
  48.             if ($designation->get("o_className") == "Designation") {
  49.                 if ($designation->isPublished()) {
  50.                     $this->actionLogService->logActionDesignation($o'update''designation'"valide");
  51.                 } else {
  52.                     $repository $this->managerRegistry->getRepository(ActionLog::class);
  53.                     $actionLog $repository->findOneBy(['objectId' => $designation->getId(), 'status' => "valide"], ['date' => 'desc']);
  54.                     if (isset($actionLog) && $actionLog->getAction() != 'delete') {
  55.                         $this->actionLogService->logActionDesignation($o'delete''designation'"valide");
  56.                     } else {
  57.                         $this->actionLogService->logActionDesignation($o'update''designation'"en-cours");
  58.                     }
  59.                 }
  60.             }
  61.         }
  62.     }
  63.     public function onDesignationPostDelete(DataObjectEvent $o)
  64.     {
  65.         $designation $o->getObject();
  66.         if ($this->designationManager->objectIsDesignation($designation)) {
  67.             $type 'designation';
  68.             if ($designation->getType() != 'folder') {
  69.                 if ($designation->get("o_className") == "Designation") {
  70.                     if ($designation->isPublished()) {
  71.                         $repository $this->managerRegistry->getRepository(ActionLog::class);
  72.                         $actionLog $repository->findOneBy(['objectId' => $designation->getId(), 'status' => "valide"], ['date' => 'desc']);
  73.                         if (isset($actionLog) && $actionLog->getAction() != 'delete') {
  74.                             $this->actionLogService->logActionDesignation($o'delete'$type"valide");
  75.                         }
  76.                     } else {
  77.                         $this->actionLogService->logActionDesignation($o'delete''designation'"en-cours");
  78.                     }
  79.                 }
  80.             }
  81.         }
  82.     }
  83. }