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 $twig, BasketContents $basketContents, EntityManagerInterface $manager, CheckActiveUser $checkActiveUser, RetrieveRebate $rebates, RetrieveClients $clients, BasketContentsActionShock $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. }