src/AutomarketBundle/Controller/BaseController.php line 88

Open in your IDE?
  1. <?php
  2. namespace AutomarketBundle\Controller;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Controller\ViDiController;
  5. use CoreBundle\Entity\Dealer;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use PortalBundle\Model\SeoMetaTag;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  11. use Twig\Error\Error;
  12. class BaseController extends ViDiController
  13. {
  14.     protected RequestStack $requestStack;
  15.     protected EntityManagerInterface $em;
  16.     protected SeoMetaTag $seoMetaTag;
  17.     public function __construct(CoreFormFactory $coreFormFactoryRequestStack $requestStackEntityManagerInterface $em,
  18.                                 SeoMetaTag $seoMetaTag)
  19.     {
  20.         parent::__construct($coreFormFactory);
  21.         $this->requestStack $requestStack;
  22.         $this->em $em;
  23.         $this->seoMetaTag $seoMetaTag;
  24.     }
  25.     /**
  26.      * @var array
  27.      */
  28.     private static $dealers = [];
  29.     /**
  30.      * @return mixed
  31.      */
  32.     public function getDealer()
  33.     {
  34.         $request $this->requestStack->getCurrentRequest();
  35.         $host $this->modifyHost($request->getHost());
  36.         if (!isset(self::$dealers[md5($host)])) {
  37.             $Dealer $this->em->getRepository(Dealer::class)->findOneBy(['domain' => $host]);
  38.             if (!$Dealer) {
  39.                 throw new NotFoundHttpException();
  40.             }
  41.             self::$dealers[md5($host)] = $Dealer;
  42.         }
  43.         return self::$dealers[md5($host)];
  44.     }
  45.     /**
  46.      * @param $host
  47.      * @return mixed
  48.      */
  49.     private function modifyHost($host)
  50.     {
  51.         return $host;
  52.     }
  53.     public function formFactory(): CoreFormFactory
  54.     {
  55.         return $this->CoreFormFactory();
  56.     }
  57.     /**
  58.      * @param string $view
  59.      * @param array $parameters
  60.      * @param Response|null $response
  61.      * @return Response
  62.      * @throws Error
  63.      */
  64.     protected function baseAutomarketRender($view, array $parameters = [], Response $response null): Response
  65.     {
  66.         $request $this->requestStack->getCurrentRequest();
  67.         $dealer $this->getDealer();
  68.         $seoMeta $this->seoMetaTag->getSeoMeta($request);
  69.         $compareCookie $request->cookies->get('compare');
  70.         $countCompare = ($compareCookie)? countexplode(','$compareCookie)) : '';
  71.         $parameters array_merge($parameters, ['forms' => $this->buildForms(), 'backLoginUrl' => $request->getUri(), 'dealer' => $dealer,  'privacyUrl' => $this->get('router')->generate('automarket_personal_data_agreement'), 'seoMeta' => $seoMeta'countCompare' => $countCompare]);
  72.         $helpCrunchParams $this->getParameter('help_crunch_params')[$dealer->getUniqueId()] ?? null;
  73.         if ($helpCrunchParams) {
  74.             $parameters array_merge($parameters,['helpCrunch' => $helpCrunchParams]);
  75.         }
  76.         return parent::render($view$parameters$response);
  77.     }
  78.     protected function buildForms()
  79.     {
  80.         return [
  81.             'callback' => $this->CoreFormFactory()->orderCallForm(null$this->getDealer(), nulltrue)->createView(),
  82.             'question' => $this->CoreFormFactory()->feedbackQuestionForm(null$this->getDealer())->createView(),
  83.             'sendQuestionForm' => $this->CoreFormFactory()->sendQuestionForm(null$this->getDealer())->createView(),
  84.         ];
  85.     }
  86. }