src/Controller/Front/HeaderController.php line 58

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Front;
  4. use App\Application\Service\Helper\PathService;
  5. use App\Application\Service\Menu\MenuService;
  6. use App\Application\Service\Menu\MenuBaseHeaderService;
  7. use App\Application\Service\Session\SessionService;
  8. use App\Entity\System\Customer;
  9. use App\Entity\System\Menu;
  10. use App\Manager\System\CartProductManager;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\RequestStack;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Security\Core\User\UserInterface;
  16. use Symfony\Contracts\Translation\TranslatorInterface;
  17. use Symfony\Component\Security\Core\Security;
  18. class HeaderController extends AbstractController
  19. {
  20.     private PathService $pathService;
  21.     private MenuBaseHeaderService $menuGeneralService;
  22.     private TranslatorInterface $translator;
  23.     private RequestStack $requestStack;
  24.     private Security $security;
  25.     private SessionService $sessionService;
  26.     private CartProductManager $cartProductManager;
  27.     private MenuService $footerService;
  28.     public function __construct(
  29.         PathService $pathService,
  30.         MenuBaseHeaderService $menuGeneralService,
  31.         TranslatorInterface $translator,
  32.         RequestStack $requestStack,
  33.         Security $security,
  34.         SessionService $sessionService,
  35.         CartProductManager $cartProductManager,
  36.         MenuService $footerService
  37.     ) {
  38.         $this->pathService $pathService;
  39.         $this->menuGeneralService $menuGeneralService;
  40.         $this->translator $translator;
  41.         $this->requestStack $requestStack;
  42.         $this->security $security;
  43.         $this->sessionService $sessionService;
  44.         $this->cartProductManager $cartProductManager;
  45.         $this->footerService $footerService;
  46.     }
  47.     /**
  48.      * Called in base_corporate.html.twig
  49.      *
  50.      * @return Response
  51.      */
  52.     public function corporateHeader(Request $requeststring $parentControllerstring $uri): Response
  53.     {
  54.         $dataMenu $this->menuGeneralService->createMenuGeneralByMenuId(Menu::HEADER_ID$this->sessionService->getLocale());
  55.         $parametersMenu $this->menuGeneralService->buildParametersMenu($request->get('legacy_controller') ?? [], $uriMenu::HEADER_ID$this->sessionService->getLocaleId());
  56.         $masterRequestRouteName $this->requestStack->getMainRequest()->get('_route');
  57.         $languages $masterRequestRouteName $this->footerService->getLanguageLinks($parentController$this->pathService->getUrlFromLegacyController($request)) : [];
  58.         $announcement $this->translator->trans('next.pre_header.christmas', [], 'landings'$this->sessionService->getLocale());
  59.         $cartId = (int)$this->sessionService->get('id_cart');
  60.         /** @var ?Customer $customer */
  61.         $customer $this->getUser();
  62.         return $this->render('front/base/header/corporate/header_corporate.html.twig', [
  63.             'languages' => $languages,
  64.             'pages' => $dataMenu,
  65.             'topbar' => $this->footerService->getTopbarLinks(MenuService::CORPORATE),
  66.             'user_packs' => $this->footerService->getCustomerPackInfo(),
  67.             'popup_data' => $this->getPopupInformation($request->getSession()->get('lang')),
  68.             'cart_number_of_products' => $cartId $this->cartProductManager->getNumberProductsInCart($cartId) : 0,
  69.             'parameters_menu' => $parametersMenu,
  70.             'first_parent' => $this->menuGeneralService->menuFirstLevelChildrenToBeShownIds($dataMenu$parametersMenu),
  71.             'announcement' => $announcement,
  72.             'isChristmas' => false,
  73.             'routeName' => $masterRequestRouteName,
  74.             'right_menu' => $this->footerService->getRightMenuData($customer),
  75.         ]);
  76.     }
  77.     protected function getPopupInformation(string $language): ?array
  78.     {
  79.         /** @var UserInterface|null $user */
  80.         $user $this->security->getUser();
  81.         if (!$user instanceof Customer || !$user->getForcePasswordUpdate() || isset($_COOKIE['popup_psw_update'])) {
  82.             return null;
  83.         }
  84.         \setcookie('popup_psw_update''1'time() + (60 60 24), '/');
  85.         return [
  86.             'title' => $this->translator->trans('forcepassword.title', [], 'messages'$language),
  87.             'msg1' => $this->translator->trans('forcepassword.msg1', [], 'messages'$language),
  88.             'msg2' => $this->translator->trans('forcepassword.msg2', [], 'messages'$language),
  89.         ];
  90.     }
  91. }