src/EventListener/SupplierTriggerReportSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Event\GlobalEventTypes;
  4. use App\Event\SupplierEventMapperInterface;
  5. use App\Event\SupplierTriggerReportEvent;
  6. use Psr\EventDispatcher\EventDispatcherInterface;
  7. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  8. class SupplierTriggerReportSubscriber extends SupplierEventSubscriber
  9. {
  10.     public function __construct(
  11.         readonly protected ParameterBagInterface $parameterBag,
  12.         protected EventDispatcherInterface $dispatcher
  13.     ) {
  14.         parent::__construct($dispatcher);
  15.     }
  16.     public static function getSubscribedEvents(): array
  17.     {
  18.         return [
  19.             GlobalEventTypes::TRIGGER_REPORT => 'onTriggerReport',
  20.         ];
  21.     }
  22.     /**
  23.      * @throws \ReflectionException
  24.      */
  25.     public function onTriggerReport(SupplierTriggerReportEvent $event): void
  26.     {
  27.         $providerCode $event->getProviderCode();
  28.         /** @var SupplierEventMapperInterface $supplierEventMapper */
  29.         $supplierEventMapper $this->parameterBag->get(sprintf('app.%s.event.mapper'$providerCode));
  30.         $supplierEventMap $supplierEventMapper::$MAP;
  31.         $response = [
  32.             $providerCode => [],
  33.         ];
  34.         foreach ($supplierEventMap as $hookName => $supplierTrigger) {
  35.             $eventInspector = new \ReflectionClass($supplierTrigger[2]);
  36.             $response[$providerCode][] = [
  37.                 'name' => $hookName,
  38.                 'event' => $supplierTrigger[0],
  39.                 'requires' => array_map(fn ($p): string => $p->name$eventInspector->getConstructor()->getParameters()),
  40.                 'description' => $supplierTrigger[3],
  41.             ];
  42.         }
  43.         $this->sendInterruptResponse($response);
  44.     }
  45. }