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 $request, string $parentController, string $uri): Response
  53. {
  54. $dataMenu = $this->menuGeneralService->createMenuGeneralByMenuId(Menu::HEADER_ID, $this->sessionService->getLocale());
  55. $parametersMenu = $this->menuGeneralService->buildParametersMenu($request->get('legacy_controller') ?? [], $uri, Menu::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 = null;
  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. }