<?php
namespace PortalBundle\Controller;
use CoreBundle\Component\CoreFormFactory;
use CoreBundle\Controller\ViDiController;
use CoreBundle\Model\Vehicles\Repository;
use CoreBundle\Model\Vehicles\VehicleType;
use PortalBundle\Services\ServiceService;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\RouterInterface;
class BaseController extends ViDiController
{
protected RequestStack $requestStack;
protected RouterInterface $router;
protected Repository $vehicleRepository;
protected ServiceService $serviceService;
public function __construct(CoreFormFactory $coreFormFactory, RequestStack $requestStack, RouterInterface $router,
Repository $vehicleRepository, ServiceService $serviceService)
{
parent::__construct($coreFormFactory);
$this->requestStack = $requestStack;
$this->router = $router;
$this->vehicleRepository = $vehicleRepository;
$this->serviceService = $serviceService;
}
protected function basePortalRender(string $view, array $parameters = [], Response $response = null): Response
{
$request = $this->requestStack->getCurrentRequest();
$subdomain = explode('.', $request->server->get('HTTP_HOST'))[0];
$isSubdomainShop = $subdomain === "shop";
$compareCookie = $request->cookies->get('compare');
$countCompare = ($compareCookie) ? count(explode(',', $compareCookie)) : '';
$parameters = array_merge($parameters, [
'backLoginUrl' => $request->getUri(),
'countCompare' => $countCompare,
'privacyUrl' => $this->router->generate('portal_privacy_policy'),
'isSubdomainShop' => $isSubdomainShop
]);
if (isset($parameters['forms'])) {
$parameters['forms'] = array_merge($parameters['forms'], $this->buildForms());
} else {
$parameters = array_merge($parameters, ['forms' => $this->buildForms()]);
}
$brandsItem = $this->vehicleRepository->getAvailBrands(true, 0, VehicleType::DEFAULT_TYPE);
$parameters['announcementBar'] = $this->serviceService->getAnnouncementBar();
foreach ($brandsItem as $row) {
if (!$row['url']) {
continue;
}
$brands[] = [
'name' => $row['name'],
'url' => $this->router->generate('portal_new_catalog_b', ['brand' => $row['url'], 'state' => 'new', 'type' => 'car'])
];
}
$vehicleType = new VehicleType();
$parameters = array_merge($parameters, ['globalBrands' => $brands, 'vehicleType' => $vehicleType]);
if (null === $response) {
$response = new Response();
}
$defaultType = VehicleType::getTypeDataById(VehicleType::DEFAULT_TYPE);
$catalogUrl = $this->router->generate('portal_new_catalog_b', ['state' => 'new', 'type' => $defaultType['url'], 'brand' => 'all']);
$parameters['catalogUrl'] = $catalogUrl;
return parent::render($view, $parameters, $response);
}
public function buildForms(): array
{
return [
'supportForm' => $this->CoreFormFactory()
->supportForm(null, $this->requestStack->getCurrentRequest()->getLocale())
->createView(),
];
}
}