- <?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(),
-         ];
-     }
- }
-