<?php
namespace App\Controller\Front;
use App\Entity\System\Language;
use App\Service\EnvironmentService;
use App\ViewManager\Landing\HomeService;
use App\ViewManager\Landing\LandingService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends AbstractController
{
private HomeService $homeService;
public RequestStack $requestStack;
private LandingService $landingService;
private EnvironmentService $environmentService;
public function __construct(
HomeService $homeService,
RequestStack $requestStack,
LandingService $landingService,
EnvironmentService $environmentService
) {
$this->homeService = $homeService;
$this->requestStack = $requestStack;
$this->landingService = $landingService;
$this->environmentService = $environmentService;
}
/**
* @Route("/", name="homepage_default", priority=-5, methods={"GET"})
* @Route({
* "default": "/",
* "en": "/en/",
* "es": "/es/",
* "fr": "/fr/",
* "de": "/de/",
* "pt": "/pt/",
* "el": "/el/",
* "hr": "/hr/",
* "it": "/it/",
* "et": "/et/",
* "da": "/da/",
* "fi": "/fi/",
* "ro": "/ro/",
* "bg": "/bg/",
* "hu": "/hu/",
* "sk": "/sk/",
* "si": "/si/",
* "lt": "/lt/",
* "lv": "/lv/",
* "pl": "/pl/",
* "nl": "/nl/",
* "ru": "/ru/",
* "no": "/no/",
* "sv": "/sv/",
* "cs": "/cs/"*
* }, name="homepage", priority=-5, methods={"GET"})
*/
public function corporative(Request $request): Response
{
if ($this->environmentService->isApi()) {
return new JsonResponse(['code' => 'Bad request', 'message' => Response::HTTP_BAD_REQUEST, ], Response::HTTP_BAD_REQUEST);
}
$this->requestStack->getSession()->set('isHome', true);
$isoCode = $request->getSession()->get('lang') ?? 'es';
$metaData = $this->homeService->getMetaData($isoCode);
$langFabImage = in_array($isoCode, [Language::SPANISH_ISO, Language::ENGLISH_ISO]) ? $isoCode : Language::ENGLISH_ISO;
return $this->render(
'front/home/index.html.twig',
[
'landingHtml' => $this->landingService->getLandingContentInternal('corporative-home'),
'metas' => $metaData,
'iso_code_lang' => $isoCode,
'iso_code_lang_fab' => $langFabImage,
'show_tab_tag' => true,
]
);
}
/**
* @Route("dinamicDataHome", methods={"GET"})
*/
public function dinamicDataHome(): Response
{
$language = $this->requestStack->getSession()->get('lang');
$dinamicDataHome = $this->homeService->dinamicDataHome(
$language
);
return new Response(
$dinamicDataHome,
Response::HTTP_OK,
['content-type' => 'application/json']
);
}
}