src/EventSubscriber/TwigEventSubscriber.php line 39

  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Service\BasketContents;
  4. use App\Service\BasketContentsActionShock;
  5. use App\Service\CheckActiveUser;
  6. use App\Service\RetrieveRebate;
  7. use App\Service\RetrieveClients;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  12. use Symfony\Component\HttpKernel\HttpKernelInterface;
  13. use Symfony\Component\HttpKernel\KernelEvents;
  14. use Twig\Environment;
  15. class TwigEventSubscriber implements EventSubscriberInterface
  16. {
  17.     private $twig;
  18.     private $basketContents;
  19.     private $checkActiveUser;
  20.     private $manager;
  21.     private $rebates;
  22.     private $clients;
  23.     private $basketContentsActionShock;
  24.     public function __construct(Environment $twigBasketContents $basketContentsEntityManagerInterface $managerCheckActiveUser $checkActiveUserRetrieveRebate $rebatesRetrieveClients $clientsBasketContentsActionShock $basketContentsActionShock)
  25.     {
  26.         $this->twig $twig;
  27.         $this->basketContents $basketContents;
  28.         $this->manager $manager;
  29.         $this->checkActiveUser $checkActiveUser;
  30.         $this->rebates $rebates;
  31.         $this->clients $clients;
  32.         $this->basketContentsActionShock $basketContentsActionShock;
  33.     }
  34.     public function onKernelController(ControllerEvent $event): void
  35.     {
  36.         $cartInfos $this->basketContents->findBasketContent($this->manager);
  37.         $this->twig->addGlobal('basketContents'$cartInfos->cartItemsCount);
  38.         $this->twig->addGlobal('noRebateQty'$cartInfos->noRebateQty);
  39.         $this->twig->addGlobal('rebates'$this->rebates->findAllActiveRebates($this->manager));
  40.         $this->twig->addGlobal('rebateNatura'$this->rebates->findActiveRebatesBrand($this->manager$this->rebates->findAllActiveRebates($this->manager)));
  41.         $this->twig->addGlobal('clients'$this->clients->retrieveAllClients($this->manager));
  42.         $this->twig->addGlobal('basketContentsActionShock'$this->basketContentsActionShock->findBasketContentActionShock($this->manager));
  43.         $response $this->checkActiveUser->checkIfActiveUser();
  44.         if ($response instanceof RedirectResponse) {
  45.             $event->setController(fn() => $response);
  46.             $event->getRequest()->attributes->set('_controller'HttpKernelInterface::MAIN_REQUEST);
  47.         }
  48.     }
  49.     public static function getSubscribedEvents(): array
  50.     {
  51.         return [
  52.             KernelEvents::CONTROLLER => 'onKernelController',
  53.         ];
  54.     }
  55. }