src/Controller/Front/CmsController.php line 170

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Application\Service\ElasticSearch\ElasticSearchService;
  4. use App\Application\Service\Helper\ConfigurationService;
  5. use App\Application\Service\Helper\LinkGenerator;
  6. use App\Entity\System\Pack;
  7. use App\ViewManager\Landing\LandingService;
  8. use App\Entity\System\Cms;
  9. use App\Entity\System\Language;
  10. use App\Entity\System\Tag;
  11. use App\Manager\System\BrandManager;
  12. use App\Manager\System\CmsLanguageManager;
  13. use App\Manager\System\TagManager;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Contracts\Translation\TranslatorInterface;
  20. class CmsController extends AbstractController
  21. {
  22.     public string $linkLoginAliExpress 'https://login.aliexpress.com/join/seller/unifiedJoin.htm?_regbizsource=ES_Bigbuy    ';
  23.     public string $linkLoginShopify 'https://www.shopify.com/?ref=bigbuy';
  24.     public const DOMAIN 'landings';
  25.     private CmsLanguageManager $cmsLanguageManager;
  26.     private BrandManager $brandManager;
  27.     private ElasticSearchService $elasticSearchService;
  28.     private TranslatorInterface $translator;
  29.     private LinkGenerator $linkGenerator;
  30.     private TagManager $tagManager;
  31.     private LandingService $landingService;
  32.     public function __construct(
  33.         CmsLanguageManager $cmsLanguageManager,
  34.         BrandManager $brandManager,
  35.         ElasticSearchService $elasticSearchService,
  36.         TranslatorInterface $translator,
  37.         LinkGenerator $linkGenerator,
  38.         TagManager $tagManager,
  39.         LandingService $landingService
  40.     ) {
  41.         $this->cmsLanguageManager $cmsLanguageManager;
  42.         $this->brandManager $brandManager;
  43.         $this->elasticSearchService $elasticSearchService;
  44.         $this->translator $translator;
  45.         $this->linkGenerator $linkGenerator;
  46.         $this->tagManager $tagManager;
  47.         $this->landingService $landingService;
  48.     }
  49.     /**
  50.      * @Route("en/demo-multi-channel-integration-platform.html")
  51.      * @Route("es/demo-multi-channel-integration-platform.html")
  52.      * @Route("fr/demo-multi-channel-integration-platform.html")
  53.      * @Route("de/demo-multi-channel-integration-platform.html")
  54.      * @Route("pt/demo-multi-channel-integration-platform.html")
  55.      * @Route("el/demo-multi-channel-integration-platform.html")
  56.      * @Route("hr/demo-multi-channel-integration-platform.html")
  57.      * @Route("it/demo-multi-channel-integration-platform.html")
  58.      * @Route("et/demo-multi-channel-integration-platform.html")
  59.      * @Route("da/demo-multi-channel-integration-platform.html")
  60.      * @Route("fi/demo-multi-channel-integration-platform.html")
  61.      * @Route("ro/demo-multi-channel-integration-platform.html")
  62.      * @Route("bg/demo-multi-channel-integration-platform.html")
  63.      * @Route("hu/demo-multi-channel-integration-platform.html")
  64.      * @Route("sk/demo-multi-channel-integration-platform.html")
  65.      * @Route("si/demo-multi-channel-integration-platform.html")
  66.      * @Route("lt/demo-multi-channel-integration-platform.html")
  67.      * @Route("lv/demo-multi-channel-integration-platform.html")
  68.      * @Route("pl/demo-multi-channel-integration-platform.html")
  69.      * @Route("nl/demo-multi-channel-integration-platform.html")
  70.      * @Route("ru/demo-multi-channel-integration-platform.html")
  71.      * @Route("no/demo-multi-channel-integration-platform.html")
  72.      * @Route("sv/demo-multi-channel-integration-platform.html")
  73.      * @Route("cs/demo-multi-channel-integration-platform.html")
  74.      */
  75.     public function viewMIPDemo(Request $request): Response
  76.     {
  77.         $idLang $request->getSession()->get('id_lang');
  78.         $metas $this->cmsLanguageManager->getCmsMetasLanguage(Cms::CMS_MIP_DEMO$idLang);
  79.         return $this->render(
  80.             'front/cms/cms_mip_demo.html.twig',
  81.             [
  82.                 'metas' => $metas,
  83.                 'languages' => $this->landingService->getCmsHrefLanguages(),
  84.             ]
  85.         );
  86.     }
  87.     /**
  88.      * @Route("en/integrations-mip.html")
  89.      * @Route("es/integraciones-mip.html")
  90.      * @Route("fr/integrations-mip.html")
  91.      * @Route("de/integrationen-mip.html")
  92.      * @Route("pt/integracoes-mip.html")
  93.      * @Route("el/integrations-mip.html")
  94.      * @Route("hr/integracije-mip.html")
  95.      * @Route("it/integrazioni-mip.html")
  96.      * @Route("et/integratsiooni-mip.html")
  97.      * @Route("da/integreringer-mip.html")
  98.      * @Route("fi/integrointialustan-mip.html")
  99.      * @Route("ro/integrari-mip.html")
  100.      * @Route("bg/integrations-mip.html")
  101.      * @Route("hu/integracioi-mip.html")
  102.      * @Route("sk/integracie-mip.html")
  103.      * @Route("si/integracija-mip.html")
  104.      * @Route("lt/integracie-mip.html")
  105.      * @Route("lv/integracie-mip.html")
  106.      * @Route("pl/integracje-mip.html")
  107.      * @Route("nl/integraties-mip.html")
  108.      * @Route("ru/integrations-mip.html")
  109.      * @Route("no/integrasjoner-mip.html")
  110.      * @Route("sv/integrationer-mip.html")
  111.      * @Route("cs/integrations-mip.html")
  112.      */
  113.     public function view(Request $request): Response
  114.     {
  115.         $idLang $request->getSession()->get('id_lang');
  116.         $metas $this->cmsLanguageManager->getCmsMetasLanguage(Cms::CMS_INTEGRATIONS$idLang);
  117.         $cmsFrontLegacy = new \cmsController();
  118.         $viewArgs $cmsFrontLegacy->view();
  119.         return $this->render(
  120.             'front/cms/cms_integraciones_mip.html.twig',
  121.             [
  122.                 'viewargs' => $viewArgs,
  123.                 'metas' => $metas,
  124.                 'languages' => $this->landingService->getCmsHrefLanguages(),
  125.             ]
  126.         );
  127.     }
  128.     /**
  129.      * @Route("en/wholesaler-packs.html")
  130.      * @Route("es/packs-mayoristas.html")
  131.      * @Route("fr/packs-grossistes.html")
  132.      * @Route("de/grosshandelspakete.html")
  133.      * @Route("pt/pacotes-grossistas.html")
  134.      * @Route("el/paketa-xondrikis.html")
  135.      * @Route("hr/veleprodajni-paketi.html")
  136.      * @Route("it/pacchetti-all-ingrosso.html")
  137.      * @Route("et/hulgimüügipaketid.html")
  138.      * @Route("da/engros-pakker.html")
  139.      * @Route("fi/tukkumyyjä-paketit.html")
  140.      * @Route("ro/pachete-engros.html")
  141.      * @Route("bg/opakovka-na-edro.html")
  142.      * @Route("hu/nagykereskedői-csomag.html")
  143.      * @Route("sk/velkoobchodnicke-baliky.html")
  144.      * @Route("si/veleprodajni-paketi.html")
  145.      * @Route("lt/didmeniniai-pasiulymai.html")
  146.      * @Route("lv/vairumtirgotaju-pakas.html")
  147.      * @Route("pl/pakiety-hurtowe.html")
  148.      * @Route("nl/groothandel-pakketten.html")
  149.      * @Route("ru/wholesaler-packs.html")
  150.      * @Route("no/engros-pakker.html")
  151.      * @Route("sv/grossistpaket.html")
  152.      * @Route("cs/velkoobchodni-balicky.html")
  153.      *
  154.      * */
  155.     public function view_pack_mayorista(Request $request): Response
  156.     {
  157.         $idLang $request->getSession()->get('id_lang');
  158.         $customerId $request->getSession()->get('id_customer');
  159.         $lang $request->getSession()->get('lang');
  160.         /** @var CmsLanguageManager $metas */
  161.         $metas $this->cmsLanguageManager->getCmsMetasLanguage(Cms::CMS_WHOLESALE_PACKS$idLang);
  162.         $cmsFrontLegacy = new \cmsController();
  163.         $cmsPack $cmsFrontLegacy->view_pack_mayorista();
  164.         if ($cmsPack['isMobile']) {
  165.             return $this->render(
  166.                 'front/cms/mobile/cms_packs.html.twig',
  167.                 [
  168.                     'metas' => $metas,
  169.                     'lang' => $lang,
  170.                     'languages' => $this->landingService->getCmsHrefLanguages(),
  171.                     'customerId' => $customerId,
  172.                     'cmsPack' => $cmsPack,
  173.                     'domain' => 'landings',
  174.                 ]
  175.             );
  176.         }
  177.         return $this->render(
  178.             'front/cms/cms_packs.html.twig',
  179.             [
  180.                 'metas' => $metas,
  181.                 'lang' => $lang,
  182.                 'languages' => $this->landingService->getCmsHrefLanguages(),
  183.                 'customerId' => $customerId,
  184.                 'cmsPack' => $cmsPack,
  185.                 'domain' => 'landings',
  186.             ]
  187.         );
  188.     }
  189.     /**
  190.      * @Route("en/multi-channel-integration.html")
  191.      * @Route("es/multi-channel-integration.html")
  192.      * @Route("fr/multi-channel-integration.html")
  193.      * @Route("de/multi-channel-integration.html")
  194.      * @Route("pt/multi-channel-integration.html")
  195.      * @Route("el/multi-channel-integration.html")
  196.      * @Route("hr/multi-channel-integration.html")
  197.      * @Route("it/multi-channel-integration.html")
  198.      * @Route("et/multi-channel-integration.html")
  199.      * @Route("da/multi-channel-integration.html")
  200.      * @Route("fi/multi-channel-integration.html")
  201.      * @Route("ro/multi-channel-integration.html")
  202.      * @Route("bg/multi-channel-integration.html")
  203.      * @Route("hu/multi-channel-integration.html")
  204.      * @Route("sk/multi-channel-integration.html")
  205.      * @Route("si/multi-channel-integration.html")
  206.      * @Route("lt/multi-channel-integration.html")
  207.      * @Route("lv/multi-channel-integration.html")
  208.      * @Route("pl/multi-channel-integration.html")
  209.      * @Route("nl/multi-channel-integration.html")
  210.      * @Route("ru/multi-channel-integration.html")
  211.      * @Route("no/multi-channel-integration.html")
  212.      * @Route("sv/multi-channel-integration.html")
  213.      * @Route("cs/multi-channel-integration.html")
  214.      */
  215.     public function mipCms(Request $requestConfigurationService $configurationLinkGenerator $linkGenerator): Response
  216.     {
  217.         $dropshipingConfig = \array_keys(Pack::DROPSHIPPING_PACK_INDEXED_BY_ID);
  218.         $lang $request->getSession()->get('lang');
  219.         $idLang $request->getSession()->get('id_lang');
  220.         $customerPack =  $request->getSession()->get('customerPack');
  221.         $customerId $request->getSession()->get('id_customer');
  222.         /** @var CmsLanguageManager $metas */
  223.         $metas $this->cmsLanguageManager->getCmsMetasLanguage(Cms::CMS_MULTICHANNEL_ID$idLang);
  224.         $criteria = [
  225.             'active' => true,
  226.         ];
  227.         $numBrandsActive $this->brandManager->countBy($criteria);
  228.         $numReferences =  $this->elasticSearchService->getNumTotalProductsIndexedByElastic();
  229.         $hasShop = (bool)\syncronised_shop_configuration::getSyncronisedShops($customerId);
  230.         $cmsFrontLegacy = new \cmsController();
  231.         $vars $cmsFrontLegacy->viewFull(Cms::CMS_MULTICHANNEL_ID);
  232.         $linkShop $linkGenerator->getFrontUrl('tiendab2b.html');
  233.         if ($vars['is_mobile']) {
  234.             return $this->render(
  235.                 'front/cms/mobile/cms_mip.html.twig',
  236.                 [
  237.                     'metas' => $metas,
  238.                     'lang' => $lang,
  239.                     'languages' => $this->landingService->getCmsHrefLanguages(),
  240.                     'customerId' => $customerId,
  241.                     'vars' => $vars,
  242.                     'dropshiping' => $dropshipingConfig,
  243.                     'customerPack' => $customerPack,
  244.                     'numBrands' => $numBrandsActive,
  245.                     'numReferences' => $numReferences['total_results'] ?? null,
  246.                     'hasShop' => $hasShop,
  247.                     'linkShop' => $linkShop,
  248.                     'linkLoginAliExpress' => $this->linkLoginAliExpress,
  249.                     'linkLoginShopify' => $this->linkLoginShopify,
  250.                     'blackFridayEnabled' => $this->blackFridayIsEnabled(),
  251.                 ]
  252.             );
  253.         }
  254.         return $this->render(
  255.             'front/cms/cms_mip.html.twig',
  256.             [
  257.                 'metas' => $metas,
  258.                 'lang' => $lang,
  259.                 'languages' => $this->landingService->getCmsHrefLanguages(),
  260.                 'customerId' => $customerId,
  261.                 'vars' => $vars,
  262.                 'dropshiping' => $dropshipingConfig,
  263.                 'customerPack' => $customerPack,
  264.                 'numBrands' => $numBrandsActive,
  265.                 'numReferences' => $numReferences['total_results'] ?? null,
  266.                 'hasShop' => $hasShop,
  267.                 'linkShop' => $linkShop,
  268.                 'linkLoginAliExpress' => $this->linkLoginAliExpress,
  269.                 'linkLoginShopify' => $this->linkLoginShopify,
  270.                 'blackFridayEnabled' => $this->blackFridayIsEnabled(),
  271.             ]
  272.         );
  273.     }
  274.     /**
  275.      * @Route("promotionBannerMip")
  276.      *
  277.      * @param Request $request
  278.      *
  279.      * @return JsonResponse
  280.      */
  281.     public function getPromotionBannerMip(Request $request): JsonResponse
  282.     {
  283.         $lang $request->getSession()->get('lang');
  284.         $idLang $request->getSession()->get('id_lang');
  285.         $promotionBanner =  [
  286.             'promotionBanner' => [
  287.                 'title' => $this->translator->trans('landings.home.promotionBanner.title', ['%html_br%' => '<br />'], self::DOMAIN$lang),
  288.                 'subtitle' => $this->translator->trans('landings.home.promotionBanner.subtitle', [], self::DOMAIN$lang),
  289.                 'buttonText' => $this->translator->trans('landings.home.promotionBanner.buttonText', [], self::DOMAIN$lang),
  290.                 'buttonLink' => $this->linkGenerator->getCmsLink(Cms::CMS_INTEGRATIONS$idLang),
  291.             ],
  292.         ];
  293.         return new JsonResponse(json_encode($promotionBanner), Response::HTTP_OK, ['Content-Type''application/json'], true);
  294.     }
  295.     /**
  296.      * @return bool
  297.      */
  298.     protected function blackFridayIsEnabled(): bool
  299.     {
  300.         $tag $this->tagManager->findOneBy(['id' => Tag::BLACK_FRIDAY_TAG_ID'language' => Language::SPANISH_LANGUAGE_ID]);
  301.         return $tag->isActive();
  302.     }
  303. }