src/DcSiteBundle/Controller/Volvo/BaseController.php line 32

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller\Volvo;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Component\FormManager;
  5. use CoreBundle\Factory\Vehicle as VehicleFactory;
  6. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  7. use CoreBundle\Model\Vehicles\Repository;
  8. use CoreBundle\Model\WinnerRate;
  9. use CoreBundle\Services\MediaExtensionVidi;
  10. use DcSiteBundle\Controller\BaseDcController;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use PortalBundle\Model\SeoMetaTag;
  13. use Symfony\Component\Filesystem\Filesystem;
  14. use Symfony\Component\HttpFoundation\RequestStack;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  17. use Symfony\Component\Routing\RouterInterface;
  18. use Twig\Environment;
  19. class BaseController extends BaseDcController
  20. {
  21.     protected WinnerRate $winnerRate;
  22.     public function __construct(WinnerRate $winnerRateCoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  23.     {
  24.         $this->winnerRate $winnerRate;
  25.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  26.     }
  27.     protected function baseVolvoRender($view, array $parameters = [], Response $response null): ?Response
  28.     {
  29.         $request $this->requestStack->getCurrentRequest();
  30.         $vehicleCategories = [];
  31.         foreach ($this->getNewVehicles() as $vehicle) {
  32.             $vehicleCategories[$vehicle->getVehicleEntity()->getCategory()->getID()]['title'] = $vehicle->getVehicleEntity()->getCategory()->getTitle($request->getLocale());
  33.             $vehicleCategories[$vehicle->getVehicleEntity()->getCategory()->getID()]['vehicles'][] = $vehicle;
  34.         }
  35.         ksort($vehicleCategories);
  36.         $parameters array_merge($parameters, [
  37.             'forms' => $this->buildForms(),
  38.             'dealerRate' => $this->get('core.winner_rate.model')->getRateWinner($this->getDealer()),
  39.             'newVehicles' => $vehicleCategories,
  40.             'privacyUrl' => $this->router->generate('volvo_personal_data_policy'),
  41.         ]);
  42.         return parent::baseDcRender($view$parameters$response);
  43.     }
  44.     public function buildForms(): array
  45.     {
  46.         return [
  47.             'callback' => $this->CoreFormFactory()->orderCallForm(null$this->getDealer())->createView(),
  48.             'question' => $this->CoreFormFactory()->feedbackQuestionForm(null$this->getDealer())->createView(),
  49.         ];
  50.     }
  51.     public function getNewVehicles(): array
  52.     {
  53.         $vehicles $this->vehicleRepository->getNewByDealer($this->getDealer());
  54.         $result = [];
  55.         foreach ($vehicles as $vehicle) {
  56.             $model $this->vehicleFactory->createByEntity($vehicle);
  57.             if (!$model) {
  58.                 continue;
  59.             }
  60.             $result[] = $model;
  61.         }
  62.         return $result;
  63.     }
  64. }