src/Controller/Front/HeaderController.php line 74

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Front;
  4. use App\Application\Service\Helper\ConfigurationService;
  5. use App\Application\Service\Helper\PathService;
  6. use App\Application\Service\Menu\BaseMenuService;
  7. use App\Application\Service\Menu\CorporateMenuService;
  8. use App\Application\Service\Menu\MenuBaseHeaderService;
  9. use App\Application\Service\Menu\ShopMenuService;
  10. use App\Entity\System\Customer;
  11. use App\Entity\System\Menu;
  12. use App\Service\Customer\CustomerPackService;
  13. use Psr\Cache\InvalidArgumentException;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\RequestStack;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. use Symfony\Component\Security\Core\Security;
  20. class HeaderController extends AbstractController
  21. {
  22.     private ShopMenuService $shopMenuService;
  23.     private CorporateMenuService $corporateMenuService;
  24.     private PathService $pathService;
  25.     private MenuBaseHeaderService $menuGeneralService;
  26.     private TranslatorInterface $translator;
  27.     private RequestStack $requestStack;
  28.     private ConfigurationService $configurationService;
  29.     private Security $security;
  30.     private CustomerPackService $customerPackService;
  31.     public function __construct(
  32.         ShopMenuService $shopMenuService,
  33.         CorporateMenuService $corporateMenuService,
  34.         PathService $pathService,
  35.         MenuBaseHeaderService $menuGeneralService,
  36.         TranslatorInterface $translator,
  37.         RequestStack $requestStack,
  38.         ConfigurationService $configurationService,
  39.         Security $security,
  40.         CustomerPackService $customerPackService
  41.     ) {
  42.         $this->shopMenuService $shopMenuService;
  43.         $this->corporateMenuService $corporateMenuService;
  44.         $this->pathService $pathService;
  45.         $this->menuGeneralService $menuGeneralService;
  46.         $this->translator $translator;
  47.         $this->requestStack $requestStack;
  48.         $this->configurationService $configurationService;
  49.         $this->security $security;
  50.         $this->customerPackService $customerPackService;
  51.     }
  52.     /**
  53.      * @param Request $request
  54.      * @param string $parentController
  55.      * @param string $uri
  56.      * @param RequestStack $requestStack
  57.      *
  58.      * @return Response
  59.      */
  60.     public function corporateHeader(Request $requeststring $parentControllerstring $uriRequestStack $requestStack): Response
  61.     {
  62.         $dataMenu $this->menuGeneralService->createMenuGeneralByMenuId(Menu::HEADER_ID$this->requestStack->getSession()->get('lang'));
  63.         $parametersMenu $this->menuGeneralService->buildParametersMenu($request->get('legacy_controller') ?? [], $uriMenu::HEADER_ID, (int)$this->requestStack->getSession()->get('id_lang'));
  64.         $masterRequestRouteName $requestStack->getMainRequest()->get('_route');
  65.         $languages $masterRequestRouteName $this->shopMenuService->getLanguageLinks($masterRequestRouteName$parentController$this->pathService->getUrlFromLegacyController($request)) : [];
  66.         $announcement null;
  67.         return $this->render('front/base/header/corporate/header_corporate.html.twig', [
  68.             'languages' => $languages,
  69.             'pages' => $dataMenu,
  70.             'topbar' => $this->corporateMenuService->getTopbarLinks(BaseMenuService::CORPORATE),
  71.             'user_packs' => $this->corporateMenuService->getCustomerPackInfo(),
  72.             'popup_data' => $this->getPopupInformation($request->getSession()->get('lang')),
  73.             'cart_number_of_products' => $this->corporateMenuService->getCartNumberOfProducts(),
  74.             'parameters_menu' => $parametersMenu,
  75.             'first_parent' => $this->menuGeneralService->menuFirstLevelChildrenToBeShownIds($dataMenu$parametersMenu),
  76.             'announcement' => $announcement,
  77.             'isChristmas' => $this->configurationService->getCachedValue('LOGO_NAVIDAD'),
  78.             'routeName' => $masterRequestRouteName,
  79.             'right_menu' => $this->corporateMenuService->getRightMenuData($this->getUser()),
  80.         ]);
  81.     }
  82.     /**
  83.      * @param Request $request
  84.      * @param string $parentController
  85.      * @param string $uri
  86.      * @param RequestStack $requestStack
  87.      * @param string $menuHtml
  88.      *
  89.      * @return Response
  90.      *
  91.      * @throws InvalidArgumentException
  92.      */
  93.     public function shopHeader(Request $requeststring $parentControllerstring $uriRequestStack $requestStackstring $menuHtml ''): Response
  94.     {
  95.         $languageIsoCode $request->getSession()->get('lang');
  96.         $languageId = (int)$request->getSession()->get('id_lang');
  97.         $customer $this->getUser();
  98.         $packInfo = ['pack_name' => null'pack_id' => null, ];
  99.         $dataMenu $this->menuGeneralService->createMenuGeneralByMenuId(Menu::HEADER_ID$languageIsoCode);
  100.         $parametersMenu $this->menuGeneralService->buildParametersMenu($request->get('legacy_controller'), $uriMenu::HEADER_ID$languageId);
  101.         $masterRequestRouteName $requestStack->getMainRequest()->get('_route');
  102.         if ($customer !== null) {
  103.             $customerPackInfo $this->customerPackService->getCustomerPackInfo((int)$customer->getUserIdentifier(), $languageId);
  104.             $packInfo['pack_name'] = $customerPackInfo['packName'] ?? null;
  105.             $packInfo['pack_id'] = $customerPackInfo['packId'] ?? null;
  106.         }
  107.         return $this->render('front/base/header/shop/header_shop.html.twig', [
  108.             'pages' => $dataMenu,
  109.             'topbar' => $this->shopMenuService->getTopbarLinks(BaseMenuService::SHOP),
  110.             'languages' => $this->shopMenuService->getLanguageLinks($masterRequestRouteName$parentController$this->pathService->getUrlFromLegacyController($request)),
  111.             'featured_links' => $this->shopMenuService->getFeaturedLinks($languageId),
  112.             'user_packs' => $packInfo,
  113.             'popup_data' => $this->getPopupInformation($languageIsoCode),
  114.             'cart_number_of_products' => $this->shopMenuService->getCartNumberOfProducts(),
  115.             'menu_html' => $menuHtml,
  116.             'mobileTreeCategory' => $this->shopMenuService->getCategoryTreeInfo(),
  117.             'taxonomyTree' => $this->shopMenuService->getTaxonomyTreeInfo(),
  118.             'parameters_menu' => $parametersMenu,
  119.             'first_parent' => $this->menuGeneralService->menuFirstLevelChildrenToBeShownIds($dataMenu$parametersMenu),
  120.             'announcement' => null,
  121.             'isChristmas' => $this->configurationService->getCachedValue('LOGO_NAVIDAD'),
  122.             'right_menu' => $this->shopMenuService->getRightMenuData($customer),
  123.         ]);
  124.     }
  125.     protected function getPopupInformation(string $language): ?array
  126.     {
  127.         /** @var Customer|null $user */
  128.         $user $this->security->getUser();
  129.         if ($user === null || !$user->getForcePasswordUpdate() || isset($_COOKIE['popup_psw_update'])) {
  130.             return null;
  131.         }
  132.         \setcookie('popup_psw_update''1'time() + (60 60 24), '/');
  133.         return [
  134.             'title' => $this->translator->trans('forcepassword.title', [], 'messages'$language),
  135.             'msg1' => $this->translator->trans('forcepassword.msg1', [], 'messages'$language),
  136.             'msg2' => $this->translator->trans('forcepassword.msg2', [], 'messages'$language),
  137.         ];
  138.     }
  139. }