src/Subscriber/Pos/PosNumberSubscriber.php line 45

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Subscriber\Pos;
  4. use App\Action\Query\Pos\GetPosByNumber\GetPosByNumberQuery;
  5. use App\Service\Context\ContextInterface;
  6. use App\Tool\Uuid\UuidBuilder;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. use Symfony\Component\Messenger\MessageBusInterface;
  11. use Symfony\Component\Messenger\Stamp\HandledStamp;
  12. class PosNumberSubscriber implements EventSubscriberInterface
  13. {
  14.     const PRIORITY = -127;
  15.     private string $posTypeId;
  16.     private ContextInterface $context;
  17.     private MessageBusInterface $messageBus;
  18.     private bool $skip true;
  19.     public function __construct(
  20.         string $posTypeId,
  21.         ContextInterface $context,
  22.         MessageBusInterface $messageBus
  23.     )
  24.     {
  25.         $this->posTypeId $posTypeId;
  26.         $this->context $context;
  27.         $this->messageBus $messageBus;
  28.     }
  29.     public static function getSubscribedEvents()
  30.     {
  31.         return [
  32.             KernelEvents::CONTROLLER => [
  33.                 ['onKernelController'self::PRIORITY]
  34.             ]
  35.         ];
  36.     }
  37.     public function onKernelController(ControllerEvent $event): void
  38.     {
  39.         if ($this->skip) {
  40.             return;
  41.         }
  42.         $posTypeId UuidBuilder::build($this->posTypeId);
  43.         $posId $this->messageBus->dispatch(
  44.             new GetPosByNumberQuery()
  45.         )->last(HandledStamp::class)->getResult();
  46.         $this->context
  47.             ->setPOSTypeId($posTypeId)
  48.             ->setPosId(UuidBuilder::build($posId))
  49.         ;
  50.     }
  51.     public function setSkip(bool $skip): self
  52.     {
  53.         $this->skip $skip;
  54.         return $this;
  55.     }
  56. }