src/DcSiteBundle/Controller/SiteMapController.php line 1003

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Component\FormManager;
  5. use CoreBundle\Entity\Post;
  6. use CoreBundle\Entity\Vehicles\Category;
  7. use CoreBundle\Entity\Vehicles\InStock;
  8. use CoreBundle\Entity\Vehicles\Vehicle;
  9. use CoreBundle\Factory\Vehicle as VehicleFactory;
  10. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  11. use CoreBundle\Model\Post as PostModel;
  12. use CoreBundle\Model\Vehicles\InStockRepository;
  13. use CoreBundle\Model\Vehicles\Repository;
  14. use CoreBundle\Model\Vehicles\VehicleType;
  15. use CoreBundle\Services\ImageProviderVidi;
  16. use CoreBundle\Services\MediaExtensionVidi;
  17. use DcSiteBundle\Controller\ToyotaBorispol\CarController;
  18. use DcSiteBundle\Entity\Boat;
  19. use DcSiteBundle\Entity\ModelRangePages;
  20. use DcSiteBundle\Entity\ServiceVariation;
  21. use DcSiteBundle\Entity\ServiceWork;
  22. use DcSiteBundle\Entity\ServiceWorkGroup;
  23. use DcSiteBundle\Entity\Vacancy;
  24. use DcSiteBundle\Enum\DealerPathEnum;
  25. use DcSiteBundle\Model\Catalog;
  26. use DcSiteBundle\Services\AccessoryShopService;
  27. use DcSiteBundle\Services\ModelRange\Pages\PagesService;
  28. use DcSiteBundle\Services\ServicePageService;
  29. use DcSiteBundle\Services\UsedVehicleService;
  30. use DcSiteBundle\Services\VehicleService;
  31. use Doctrine\ORM\EntityManagerInterface;
  32. use Exception;
  33. use PortalBundle\Model\SeoMetaTag;
  34. use Symfony\Component\Filesystem\Filesystem;
  35. use Symfony\Component\HttpFoundation\Request;
  36. use Symfony\Component\HttpFoundation\RequestStack;
  37. use Symfony\Component\HttpFoundation\Response;
  38. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  39. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  40. use Symfony\Component\Routing\RouterInterface;
  41. use Symfony\Component\Yaml\Yaml;
  42. use Twig\Environment;
  43. class SiteMapController extends BaseDcController
  44. {
  45.     public function __construct(CoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  46.     {
  47.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  48.     }
  49.     public function suzuki(VehicleService $vehicleService): Response
  50.     {
  51.         $root $this->getParameter('kernel.project_dir');
  52.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/suzuki/suzuki_sitemap.yml';
  53.         $routes Yaml::parseFile($routingFile);
  54.         $result = [];
  55.         foreach (['ru''ua'] as $locale) {
  56.             $router $this->router;
  57.             foreach ($routes as $rName => $route) {
  58.                 try {
  59.                     $url $router->generate($rName, ['_locale' => $locale]);
  60.                 } catch (Exception $e) {
  61.                     continue;
  62.                 }
  63.                 $p '0.5';
  64.                 $c 'daily';
  65.                 if ($rName == 'suzuki_homepage') {
  66.                     $p '1';
  67.                     $c 'always';
  68.                 }
  69.                 $result[] = [
  70.                     'url' => $url,
  71.                     'priority' => $p,
  72.                     'changefreq' => $c,
  73.                 ];
  74.             }
  75.             $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  76.             /** @var Vehicle $car */
  77.             foreach ($cars as $car) {
  78.                 switch ($car->getVehicleType()) {
  79.                     case VehicleType::PASSENGER_TYPE:
  80.                         $rName 'suzuki_card_car';
  81.                         $r2Name 'suzuki_card_car_configuraion';
  82.                         $key 'car';
  83.                         break;
  84. //                    case VehicleType::MOTO_TYPE:
  85. //                        $rName = 'suzuki_card_moto';
  86. //                        $r2Name = 'suzuki_card_moto_configuraion';
  87. //                        $key = 'moto';
  88. //                        break;
  89.                     default:
  90.                         $rName false;
  91.                         break;
  92.                 }
  93.                 if (!$rName) {
  94.                     continue;
  95.                 }
  96.                 $result[] = [
  97.                     'url' => $router->generate($rName, [$key => $car->getUrl(), '_locale' => $locale]),
  98.                     'priority' => '0.8',
  99.                     'changefreq' => 'daily',
  100.                 ];
  101.                 $result[] = [
  102.                     'url' => $router->generate($r2Name, [$key => $car->getUrl(), '_locale' => $locale]),
  103.                     'priority' => '0.8',
  104.                     'changefreq' => 'daily',
  105.                 ];
  106.             }
  107.             $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  108.             /** @var Post $one */
  109.             foreach ($post as $one) {
  110.                 if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  111.                     $url $router->generate('suzuki_about_news_single', ['url' => $one->getUrl(), '_locale' => $locale]);
  112.                 } else {
  113.                     $url $router->generate('suzuki_stocks_single', ['url' => $one->getUrl(), '_locale' => $locale]);
  114.                 }
  115.                 $result[] = [
  116.                     'url' => $url,
  117.                     'priority' => '0.3',
  118.                     'changefreq' => 'monthly',
  119.                 ];
  120.             }
  121.             $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  122.             foreach ($models as $model) {
  123.                 $result[] = [
  124.                     'url' => $router->generate('suzuki_service_regulations_to_model', ['model' => $model['url']]),
  125.                     'priority' => '0.5',
  126.                     'changefreq' => 'daily',
  127.                 ];
  128.             }
  129.             $usedCars $this->vehicleRepository->getUsed($this->getDealer(), true);
  130.             /** @var Vehicle $car */
  131.             foreach ($usedCars as $car) {
  132.                 $result[] = [
  133.                     'url' => $router->generate('suzuki_used_car_single', ['url' => $car->getUrl()]),
  134.                     'priority' => '0.5',
  135.                     'changefreq' => 'daily',
  136.                 ];
  137.             }
  138.         }
  139.         $pages $this->em
  140.             ->getRepository(ModelRangePages::class)
  141.             ->createQueryBuilder('p')
  142.             ->where('p.dealer = :dealer')
  143.             ->andWhere('p.active = 1')
  144.             ->setParameter('dealer'$this->getDealer())
  145.             ->getQuery()
  146.             ->getResult();
  147.         if (!empty($pages)) {
  148.             foreach ($pages as $page) {
  149.                 $result[] = [
  150.                     'url' => $router->generate('suzuki_model_lineup_pages', ['url' => $page->getUrl()]),
  151.                     'priority' => '0.3',
  152.                     'changefreq' => 'monthly'
  153.                 ];
  154.             }
  155.         }
  156.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'ford_sitemap']);
  157.         $response->headers->set('Content-Type''application/xml');
  158.         $response->setCharset('utf-8');
  159.         return $response;
  160.     }
  161.     public function ford(Request $requestInStockRepository $inStockRepositoryModelVehicleService $vehicleService): ?Response
  162.     {
  163.         $root $this->getParameter('kernel.project_dir');
  164.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/ford/ford_sitemap.yml';
  165.         $routes Yaml::parseFile($routingFile);
  166.         $result = [];
  167.         $router $this->router;
  168.         foreach ($routes as $rName => $route) {
  169.             try {
  170.                 $url $router->generate($rName);
  171.             } catch (Exception $e) {
  172.                 continue;
  173.             }
  174.             $priority '0.5';
  175.             $changefreq 'daily';
  176.             if ($rName == 'ford_service_accessories') {
  177.                 continue;
  178.             }
  179.             if ($rName == 'ford_homepage') {
  180.                 $priority '1';
  181.                 $changefreq 'always';
  182.             }
  183.             $result[] = [
  184.                 'url' => $url,
  185.                 'priority' => $priority,
  186.                 'changefreq' => $changefreq,
  187.             ];
  188.         }
  189.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  190.         /** @var Vehicle $car */
  191.         foreach ($cars as $car) {
  192.             $result[] = [
  193.                 'url' => $router->generate('ford_one_car', ['car' => $car->getUrl()]),
  194.                 'priority' => '0.8',
  195.                 'changefreq' => 'daily',
  196.             ];
  197.             $result[] = [
  198.                 'url' => $router->generate('ford_card_car_configuraion', ['car' => $car->getUrl()]),
  199.                 'priority' => '0.8',
  200.                 'changefreq' => 'daily',
  201.             ];
  202.         }
  203.         $archiveCars $this->vehicleRepository->getDisabled($this->getDealer());
  204.         /** @var Vehicle $car */
  205.         foreach ($archiveCars as $car) {
  206.             $result[] = [
  207.                 'url' => $router->generate('ford_one_car', ['car' => $car->getUrl()]),
  208.                 'priority' => '0.8',
  209.                 'changefreq' => 'daily',
  210.             ];
  211.             $result[] = [
  212.                 'url' => $router->generate('ford_card_car_configuraion', ['car' => $car->getUrl()]),
  213.                 'priority' => '0.5',
  214.                 'changefreq' => 'daily',
  215.             ];
  216.         }
  217.         $vacancies $this->em->getRepository(Vacancy::class)->getByDealer($this->getDealer());
  218.         /** @var Vacancy $vacancy */
  219.         foreach ($vacancies as $vacancy) {
  220.             $result[] = [
  221.                 'url' => $router->generate('ford_about_vacancy_id', ['id' => $vacancy->getId()]),
  222.                 'priority' => '0.2',
  223.                 'changefreq' => 'monthly',
  224.             ];
  225.         }
  226.         $post $this->em->getRepository(Post::class)
  227.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  228.         /** @var Post $one */
  229.         foreach ($post as $one) {
  230.             $result[] = [
  231.                 'url' => $router->generate('ford_get_post', ['url' => $one->getUrl()]),
  232.                 'priority' => '0.3',
  233.                 'changefreq' => 'monthly',
  234.             ];
  235.         }
  236.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  237.         /** @var InStock $vehicle */
  238.         foreach ($inStock as $vehicle) {
  239.             $result[] = [
  240.                 'url' => $router->generate('ford_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
  241.                 'priority' => '0.8',
  242.                 'changefreq' => 'monthly',
  243.             ];
  244.         }
  245.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  246.         foreach ($models as $model) {
  247.             $result[] = [
  248.                 'url' => $router->generate('ford_service_regulations_to_model', ['model' => $model['url']]),
  249.                 'priority' => '0.5',
  250.                 'changefreq' => 'daily',
  251.             ];
  252.         }
  253.         $usedCars $this->vehicleRepository->getUsed($this->getDealer(), true);
  254.         /** @var Vehicle $car */
  255.         foreach ($usedCars as $car) {
  256.             $result[] = [
  257.                 'url' => $router->generate('ford_used_car_single', ['url' => $car->getUrl()]),
  258.                 'priority' => '0.5',
  259.                 'changefreq' => 'daily',
  260.             ];
  261.         }
  262.         $pages $this->em
  263.             ->getRepository(ModelRangePages::class)
  264.             ->createQueryBuilder('p')
  265.             ->where('p.dealer = :dealer')
  266.             ->andWhere('p.active = 1')
  267.             ->setParameter('dealer'$this->getDealer())
  268.             ->getQuery()
  269.             ->getResult();
  270.         if (!empty($pages)) {
  271.             foreach ($pages as $page) {
  272.                 $result[] = [
  273.                     'url' => $router->generate('ford_list_cars_pages', ['url' => $page->getUrl()]),
  274.                     'priority' => '0.3',
  275.                     'changefreq' => 'monthly'
  276.                 ];
  277.             }
  278.         }
  279.         $carList $this->getModelMenuItems($request->getLocale(), 'small');
  280.         foreach ($carList as $category) {
  281.             $result[] = [
  282.                 'url' => $router->generate('ford_model_catalog_category', ['category' => $category['url']]),
  283.                 'priority' => '0.5',
  284.                 'changefreq' => 'daily',
  285.             ];
  286.         }
  287.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'ford_sitemap']);
  288.         $response->headers->set('Content-Type''application/xml');
  289.         $response->setCharset('utf-8');
  290.         return $response;
  291.     }
  292.     public function jeep(Request $requestVehicleService $vehicleServiceUsedVehicleService $usedVehicleService): Response
  293.     {
  294.         $root $this->getParameter('kernel.project_dir');
  295.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/jeep/jeep_sitemap.yml';
  296.         $routes Yaml::parseFile($routingFile);
  297.         $result = [];
  298.         $router $this->router;
  299.         $dealer $this->getDealer();
  300.         foreach ($routes as $rName => $route) {
  301.             try {
  302.                 $url $router->generate($rName);
  303.             } catch (Exception $e) {
  304.                 continue;
  305.             }
  306.             if ($rName == 'jeep_public_offer') {
  307.                 continue;
  308.             }
  309.             if ($rName == 'jeep_homepage') {
  310.                 $result[] = [
  311.                     'url' => $url,
  312.                     'priority' => '1',
  313.                     'changefreq' => 'always',
  314.                 ];
  315.             } else {
  316.                 $result[] = [
  317.                     'url' => $url,
  318.                     'priority' => '0.5',
  319.                     'changefreq' => 'daily',
  320.                 ];
  321.             }
  322.         }
  323.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  324.         /** @var Vehicle $car */
  325.         foreach ($cars as $car) {
  326.             if ($car->getIsUsed()) {
  327.                 continue;
  328.             } else {
  329.                 $result[] = [
  330.                     'url' => $router->generate('jeep_car', ['car' => $car->getUrl()]),
  331.                     'priority' => '0.8',
  332.                     'changefreq' => 'daily',
  333.                 ];
  334.             }
  335.         }
  336.         $vacancies $this->em->getRepository(Vacancy::class)->getByDealer($dealer);
  337.         /** @var Vacancy $vacancy */
  338.         foreach ($vacancies as $vacancy) {
  339.             $result[] = [
  340.                 'url' => $router->generate('jeep_about_vacancy_id', ['id' => $vacancy->getId()]),
  341.                 'priority' => '0.3',
  342.                 'changefreq' => 'daily',
  343.             ];
  344.         }
  345.         $vehicles $this->em->getRepository(Vehicle::class)->getNewByDealer($dealer);
  346.         /** @var Vehicle $vehicles */
  347.         foreach ($vehicles as $vehicle) {
  348.             $result[] = [
  349.                 'url' => $router->generate('jeep_technical_characteristics', ['model' => $vehicle->geturl()]),
  350.                 'priority' => '0.7',
  351.                 'changefreq' => 'daily',
  352.             ];
  353.         }
  354.         $vehiclesInStock $this->em->getRepository(InStock::class)->getByDealer($dealer);
  355.         /** @var InStock $vehiclesInStock */
  356.         foreach ($vehiclesInStock as $vehicleInStock) {
  357.             $result[] = [
  358.                 'url' => $router->generate('jeep_car_in_stock_single', ['url' => $vehicleInStock->geturl()]),
  359.                 'priority' => '0.5',
  360.                 'changefreq' => 'daily',
  361.             ];
  362.         }
  363.         $news $this->em->getRepository(Post::class)->getNewsByDealer($dealer);
  364.         /** @var Post $news */
  365.         foreach ($news as $new) {
  366.             $result[] = [
  367.                 'url' => $router->generate('jeep_news_single', ['news' => $new->geturl()]),
  368.                 'priority' => '0.3',
  369.                 'changefreq' => 'daily',
  370.             ];
  371.         }
  372.         $vehiclesServices $vehicleService->getModelsForRegulationsTo($dealer);
  373.         /** @var VehicleService $vehiclesServices */
  374.         foreach ($vehiclesServices as $vehicleService) {
  375.             $result[] = [
  376.                 'url' => $router->generate('jeep_service_regulations_to_model', ['model' => $vehicleService['url']]),
  377.                 'priority' => '0.5',
  378.                 'changefreq' => 'daily',
  379.             ];
  380.         }
  381.         $usedVehicles $usedVehicleService->getUsedVehiclesForSitemap($this->getDealer(), DealerPathEnum::JEEP$request->getLocale());
  382.         foreach ($usedVehicles as $usedVehicle) {
  383.             $result[] = [
  384.                 'url' => $router->generate('jeep_used_car_single', ['url' => $usedVehicle]),
  385.                 'priority' => '0.7',
  386.                 'changefreq' => 'daily',
  387.             ];
  388.         }
  389.         $posts $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer());
  390.         /** @var Post $post */
  391.         foreach ($posts as $post) {
  392.             if ($post->getPostType() == PostModel::POST_TYPE_NEWS) {
  393.                 $url $router->generate('jeep_news_single', ['news' => $post->getUrl()]);
  394.             } else {
  395.                 $url $router->generate('jeep_actions_single', ['actions' => $post->getUrl()]);
  396.             }
  397.             $result[] = [
  398.                 'url' => $url,
  399.                 'priority' => '0.3',
  400.                 'changefreq' => 'monthly',
  401.             ];
  402.         }
  403.         $response $this->render('@DcSite/sitemap.xml.twig', [
  404.             'urls' => $result,
  405.             'route' => 'jeep_sitemap'
  406.         ]);
  407.         $response->headers->set('Content-Type''application/xml');
  408.         $response->setCharset('utf-8');
  409.         return $response;
  410.     }
  411.     public function mazda(VehicleService $vehicleService): Response
  412.     {
  413.         $root $this->getParameter('kernel.project_dir');
  414.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/mazda/mazda_sitemap.yml';
  415.         $routes Yaml::parseFile($routingFile);
  416.         $result = [];
  417.         $router $this->router;
  418.         foreach ($routes as $rName => $route) {
  419.             try {
  420.                 $url $router->generate($rName);
  421.             } catch (Exception $e) {
  422.                 continue;
  423.             }
  424.             $priority '0.5';
  425.             $changefreq 'daily';
  426.             if ($rName == 'mazda_service_souvenirs_ajax') {
  427.                 continue;
  428.             }
  429.             if ($rName == 'mazda_homepage') {
  430.                 $priority '1';
  431.                 $changefreq 'always';
  432.             }
  433.             $result[] = [
  434.                 'url' => $url,
  435.                 'priority' => $priority,
  436.                 'changefreq' => $changefreq,
  437.             ];
  438.         }
  439.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  440.         /** @var Vehicle $car */
  441.         foreach ($cars as $car) {
  442.             $result[] = [
  443.                 'url' => $router->generate('mazda_car_configurator', ['url' => $car->getUrl()]),
  444.                 'priority' => '0.8',
  445.                 'changefreq' => 'daily',
  446.             ];
  447.             $result[] = [
  448.                 'url' => $router->generate('mazda_card_car', ['car' => $car->getUrl()]),
  449.                 'priority' => '0.8',
  450.                 'changefreq' => 'daily',
  451.             ];
  452.             $result[] = [
  453.                 'url' => $router->generate('mazda_card_car_configuraion', ['car' => $car->getUrl()]),
  454.                 'priority' => '0.8',
  455.                 'changefreq' => 'daily',
  456.             ];
  457.         }
  458.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  459.         /** @var Post $one */
  460.         foreach ($post as $one) {
  461.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  462.                 $url $router->generate('mazda_about_news_single', ['url' => $one->getUrl()]);
  463.             } else {
  464.                 $url $router->generate('mazda_stocks_single', ['url' => $one->getUrl()]);
  465.             }
  466.             $result[] = [
  467.                 'url' => $url,
  468.                 'priority' => '0.3',
  469.                 'changefreq' => 'monthly',
  470.             ];
  471.         }
  472.         $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  473.         foreach ($usedVehicles as $vehicle) {
  474.             $result[] = [
  475.                 'url' => $router->generate('mazda_used_car_single', ['url' => $vehicle->getUrl()]),
  476.                 'priority' => '0.8',
  477.                 'changefreq' => 'daily',
  478.             ];
  479.         }
  480.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  481.         foreach ($models as $model) {
  482.             $result[] = [
  483.                 'url' => $router->generate('mazda_service_regulations_to_model', ['model' => $model['url']]),
  484.                 'priority' => '0.5',
  485.                 'changefreq' => 'daily',
  486.             ];
  487.         }
  488.         $pages $this->em
  489.             ->getRepository(ModelRangePages::class)
  490.             ->createQueryBuilder('p')
  491.             ->where('p.dealer = :dealer')
  492.             ->andWhere('p.active = 1')
  493.             ->setParameter('dealer'$this->getDealer())
  494.             ->getQuery()
  495.             ->getResult();
  496.         if (!empty($pages)) {
  497.             foreach ($pages as $page) {
  498.                 $result[] = [
  499.                     'url' => $router->generate('mazda_model_lineup_pages', ['url' => $page->getUrl()]),
  500.                     'priority' => '0.3',
  501.                     'changefreq' => 'monthly'
  502.                 ];
  503.             }
  504.         }
  505.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'ford_sitemap']);
  506.         $response->headers->set('Content-Type''application/xml');
  507.         $response->setCharset('utf-8');
  508.         return $response;
  509.     }
  510.     public function peugeot(VehicleService $vehicleService): Response
  511.     {
  512.         $root $this->getParameter('kernel.project_dir');
  513.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/peugeot/peugeot_sitemap.yml';
  514.         $routes Yaml::parseFile($routingFile);
  515.         $result = [];
  516.         foreach (['ru''ua'] as $locale) {
  517.             $router $this->router;
  518.             foreach ($routes as $rName => $route) {
  519.                 if ($rName == 'peugeot_accessories_redirect') {
  520.                     continue;
  521.                 }
  522.                 if ($rName == 'peugeot_public_offer') {
  523.                     continue;
  524.                 }
  525.                 try {
  526.                     $url $router->generate($rName, ['_locale' => $locale]);
  527.                 } catch (Exception $e) {
  528.                     continue;
  529.                 }
  530.                 $p '0.5';
  531.                 $c 'daily';
  532.                 if ($rName == 'peugeot_homepage') {
  533.                     $p '1';
  534.                     $c 'always';
  535.                 }
  536.                 $result[] = [
  537.                     'url' => $url,
  538.                     'priority' => $p,
  539.                     'changefreq' => $c,
  540.                 ];
  541.             }
  542.             $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  543.             /** @var Vehicle $car */
  544.             foreach ($cars as $car) {
  545.                 $result[] = [
  546.                     'url' => $router->generate('peugeot_card_car', ['car' => $car->getUrl(), '_locale' => $locale]),
  547.                     'priority' => '0.8',
  548.                     'changefreq' => 'daily',
  549.                 ];
  550.             }
  551.             $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  552.             /** @var Post $one */
  553.             foreach ($post as $one) {
  554.                 if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  555.                     $url $router
  556.                         ->generate(
  557.                             'peugeot_about_news_single',
  558.                             ['url' => $one->getUrl(), '_locale' => $locale]
  559.                         );
  560.                 } else {
  561.                     $url $router->generate('peugeot_stocks_single', ['url' => $one->getUrl(), '_locale' => $locale]);
  562.                 }
  563.                 $result[] = [
  564.                     'url' => $url,
  565.                     'priority' => '0.3',
  566.                     'changefreq' => 'monthly',
  567.                 ];
  568.             }
  569.             $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  570.             foreach ($models as $model) {
  571.                 if ($model['url'] == '') {
  572.                     continue;
  573.                 }
  574.                 $result[] = [
  575.                     'url' => $router->generate('peugeot_service_regulations_to_model', ['model' => $model['url']]),
  576.                     'priority' => '0.5',
  577.                     'changefreq' => 'daily',
  578.                 ];
  579.             }
  580.             $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  581.             foreach ($usedVehicles as $vehicle) {
  582.                 $result[] = [
  583.                     'url' => $router->generate('peugeot_used_car_single', ['url' => $vehicle->getUrl()]),
  584.                     'priority' => '0.5',
  585.                     'changefreq' => 'daily',
  586.                 ];
  587.             }
  588.         }
  589.         $pages $this->em
  590.             ->getRepository(ModelRangePages::class)
  591.             ->createQueryBuilder('p')
  592.             ->where('p.dealer = :dealer')
  593.             ->andWhere('p.active = 1')
  594.             ->setParameter('dealer'$this->getDealer())
  595.             ->getQuery()
  596.             ->getResult();
  597.         if (!empty($pages)) {
  598.             foreach ($pages as $page) {
  599.                 $result[] = [
  600.                     'url' => $router->generate('peugeot_model_lineup_pages', ['url' => $page->getUrl()]),
  601.                     'priority' => '0.3',
  602.                     'changefreq' => 'monthly'
  603.                 ];
  604.             }
  605.         }
  606.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'peugeot_sitemap']);
  607.         $response->headers->set('Content-Type''application/xml');
  608.         $response->setCharset('utf-8');
  609.         return $response;
  610.     }
  611.     public function subaru(InStockRepository $inStockRepositoryUsedVehicleService $usedVehicleServiceVehicleService $vehicleService): Response
  612.     {
  613.         $root $this->getParameter('kernel.project_dir');
  614.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/subaru/subaru_sitemap.yml';
  615.         $routes Yaml::parseFile($routingFile);
  616.         $result = [];
  617.         foreach (['ru''ua'] as $locale) {
  618.             $router $this->router;
  619.             foreach ($routes as $rName => $route) {
  620.                 try {
  621.                     $url $router->generate($rName, ['_locale' => $locale]);
  622.                 } catch (Exception $e) {
  623.                     continue;
  624.                 }
  625.                 $p '0.5';
  626.                 $c 'daily';
  627.                 if ($rName == 'subaru_homepage') {
  628.                     $p '1';
  629.                     $c 'always';
  630.                 }
  631.                 if ($rName == 'subaru_service_accessories' || $rName == 'subaru_check_vin_ajax') {
  632.                     continue;
  633.                 }
  634.                 $result[] = [
  635.                     'url' => $url,
  636.                     'priority' => $p,
  637.                     'changefreq' => $c,
  638.                 ];
  639.             }
  640.             $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  641.             /** @var Vehicle $car */
  642.             foreach ($cars as $car) {
  643.                 $result[] = [
  644.                     'url' => $router->generate('subaru_card_car', ['car' => $car->getUrl(), '_locale' => $locale]),
  645.                     'priority' => '0.8',
  646.                     'changefreq' => 'daily',
  647.                 ];
  648.                 $result[] = [
  649.                     'url' => $router->generate(
  650.                         'subaru_card_car_configuraion',
  651.                         ['car' => $car->getUrl(), '_locale' => $locale]
  652.                     ),
  653.                     'priority' => '0.8',
  654.                     'changefreq' => 'daily',
  655.                 ];
  656.             }
  657.             $inStock $inStockRepository->getByDealer($this->getDealer());
  658.             /** @var InStock $vehicle */
  659.             foreach ($inStock as $vehicle) {
  660.                 $result[] = [
  661.                     'url' => $router->generate('subaru_instock_car_card', ['url' => $vehicle->getUrl(), '_locale' => $locale]),
  662.                     'priority' => '0.8',
  663.                     'changefreq' => 'monthly',
  664.                 ];
  665.             }
  666.             $usedCars $usedVehicleService->getUsedVehiclesForSitemap($this->getDealer(), DealerPathEnum::SUBARU$locale);
  667.             /** @var Vehicle $car */
  668.             foreach ($usedCars as $car) {
  669.                 $result[] = [
  670.                     'url' => $router->generate('subaru_used_car_single', ['url' => $car'_locale' => $locale]),
  671.                     'priority' => '0.8',
  672.                     'changefreq' => 'daily',
  673.                 ];
  674.             }
  675.             $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  676.             /** @var Post $one */
  677.             foreach ($post as $one) {
  678.                 if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  679.                     $url $router->generate(
  680.                         'subaru_about_news_single',
  681.                         ['url' => $one->getUrl(), '_locale' => $locale]
  682.                     );
  683.                 } else {
  684.                     $url $router->generate('subaru_stocks_single', ['url' => $one->getUrl(), '_locale' => $locale]);
  685.                 }
  686.                 $result[] = [
  687.                     'url' => $url,
  688.                     'priority' => '0.3',
  689.                     'changefreq' => 'monthly',
  690.                 ];
  691.             }
  692.             $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  693.             foreach ($models as $model) {
  694.                 $result[] = [
  695.                     'url' => $router->generate('subaru_service_regulations_to_model', ['model' => $model['url']]),
  696.                     'priority' => '0.5',
  697.                     'changefreq' => 'daily',
  698.                 ];
  699.             }
  700.         }
  701.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'ford_sitemap']);
  702.         $response->headers->set('Content-Type''application/xml');
  703.         $response->setCharset('utf-8');
  704.         return $response;
  705.     }
  706.     public function infiniti(VehicleService $vehicleServiceInStockRepository $inStockRepositoryModel): Response
  707.     {
  708.         $root $this->getParameter('kernel.project_dir');
  709.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/infiniti/infiniti_sitemap.yml';
  710.         $routes Yaml::parseFile($routingFile);
  711.         $result = [];
  712.         $router $this->router;
  713.         foreach ($routes as $rName => $route) {
  714.             try {
  715.                 $url $router->generate($rName);
  716.             } catch (Exception $e) {
  717.                 continue;
  718.             }
  719.             $priority '0.5';
  720.             $changefreq 'daily';
  721.             if ($rName == 'infiniti_public_offer') {
  722.                 continue;
  723.             }
  724.             if ($rName == 'infiniti_homepage') {
  725.                 $priority '1';
  726.                 $changefreq 'always';
  727.             }
  728.             $result[] = [
  729.                 'url' => $url,
  730.                 'priority' => $priority,
  731.                 'changefreq' => $changefreq,
  732.             ];
  733.         }
  734.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  735.         /** @var Vehicle $car */
  736.         foreach ($cars as $car) {
  737.             $result[] = [
  738.                 'url' => $router->generate('infiniti_card_car', ['url' => $car->getUrl()]),
  739.                 'priority' => '0.8',
  740.                 'changefreq' => 'daily',
  741.             ];
  742.         }
  743.         $post $this
  744.             ->em
  745.             ->getRepository(Post::class)
  746.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  747.         /** @var Post $one */
  748.         foreach ($post as $one) {
  749.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  750.                 $url $router->generate('infiniti_news_single', ['url' => $one->getUrl()]);
  751.             } else {
  752.                 $url $router->generate('infiniti_special_offers_single', ['url' => $one->getUrl()]);
  753.             }
  754.             $result[] = [
  755.                 'url' => $url,
  756.                 'priority' => '0.3',
  757.                 'changefreq' => 'monthly',
  758.             ];
  759.         }
  760.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  761.         foreach ($models as $model) {
  762.             $result[] = [
  763.                 'url' => $router->generate('infiniti_service_regulations_to_model', ['model' => $model['url']]),
  764.                 'priority' => '0.5',
  765.                 'changefreq' => 'daily',
  766.             ];
  767.         }
  768.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  769.         /** @var InStock $vehicle */
  770.         foreach ($inStock as $vehicle) {
  771.             $result[] = [
  772.                 'url' => $router->generate('infiniti_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
  773.                 'priority' => '0.3',
  774.                 'changefreq' => 'daily',
  775.             ];
  776.         }
  777.         $pages $this->em
  778.             ->getRepository(ModelRangePages::class)
  779.             ->createQueryBuilder('p')
  780.             ->where('p.dealer = :dealer')
  781.             ->andWhere('p.active = 1')
  782.             ->setParameter('dealer'$this->getDealer())
  783.             ->getQuery()
  784.             ->getResult();
  785.         if (!empty($pages)) {
  786.             foreach ($pages as $page) {
  787.                 $result[] = [
  788.                     'url' => $router->generate('infiniti_model_car_pages', ['url' => $page->getUrl()]),
  789.                     'priority' => '0.3',
  790.                     'changefreq' => 'monthly'
  791.                 ];
  792.             }
  793.         }
  794.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'ford_sitemap']);
  795.         $response->headers->set('Content-Type''application/xml');
  796.         $response->setCharset('utf-8');
  797.         return $response;
  798.     }
  799.     public function yamaha(): Response
  800.     {
  801.         $root $this->getParameter('kernel.project_dir');
  802.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/yamaha/yamaha_sitemap.yml';
  803.         $routes Yaml::parseFile($routingFile);
  804.         $result = [];
  805.         $router $this->router;
  806.         foreach ($routes as $rName => $route) {
  807.             try {
  808.                 $url $router->generate($rName);
  809.             } catch (Exception $e) {
  810.                 continue;
  811.             }
  812.             $priority '0.5';
  813.             $changefreq 'daily';
  814.             if ($rName == 'yamaha_homepage') {
  815.                 $priority '1';
  816.                 $changefreq 'always';
  817.             }
  818.             $result[] = [
  819.                 'url' => $url,
  820.                 'priority' => $priority,
  821.                 'changefreq' => $changefreq,
  822.             ];
  823.         }
  824.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  825.         /** @var Vehicle $car */
  826.         foreach ($cars as $car) {
  827.             $result[] = [
  828.                 'url' => $router->generate('yamaha_catalog_model_card', ['url' => $car->getUrl()]),
  829.                 'priority' => '0.8',
  830.                 'changefreq' => 'daily',
  831.             ];
  832.         }
  833.         $usedCars $this->vehicleRepository->getUsedByDealer($this->getDealer());
  834.         /** @var Vehicle $car */
  835.         foreach ($usedCars as $car) {
  836.             $result[] = [
  837.                 'url' => $router->generate('yamaha_commission_tehnology_model', ['url' => $car->getUrl()]),
  838.                 'priority' => '0.8',
  839.                 'changefreq' => 'daily',
  840.             ];
  841.         }
  842.         $boats $this->em->getRepository(Boat::class)->findBy(['state' => 1]);
  843.         /** @var Boat $boat */
  844.         foreach ($boats as $boat) {
  845.             $result[] = [
  846.                 'url' => $router->generate('yamaha_boat_card', ['url' => $boat->getUrl()]),
  847.                 'priority' => '0.8',
  848.                 'changefreq' => 'daily',
  849.             ];
  850.         }
  851.         //TODO remove magic numbers
  852.         foreach ([121316] as $group) {
  853.             $result[] = [
  854.                 'url' => $router->generate(
  855.                     'yamaha_catalog_all_groups_by_body',
  856.                     ['categoryUrl' => 'all''bodyId' => $group]
  857.                 ),
  858.                 'priority' => '0.8',
  859.                 'changefreq' => 'daily',
  860.             ];
  861.         }
  862.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  863.         /** @var Post $one */
  864.         foreach ($post as $one) {
  865.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  866.                 $url $router->generate('yamaha_about_news_single', ['url' => $one->getUrl()]);
  867.             } else {
  868.                 $url $router->generate('yamaha_stocks_single', ['url' => $one->getUrl()]);
  869.             }
  870.             $result[] = [
  871.                 'url' => $url,
  872.                 'priority' => '0.3',
  873.                 'changefreq' => 'monthly',
  874.             ];
  875.         }
  876.         $response $this->render(
  877.             '@DcSite/sitemap.xml.twig',
  878.             ['urls' => $result'route' => 'nissan_sitemap']
  879.         );
  880.         $response->headers->set('Content-Type''application/xml');
  881.         $response->setCharset('utf-8');
  882.         return $response;
  883.     }
  884.     public function nissan(VehicleService $vehicleServiceInStockRepository $inStockRepositoryModel): ?Response
  885.     {
  886.         $root $this->getParameter('kernel.project_dir');
  887.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/nissan/nissan_sitemap.yml';
  888.         $routes Yaml::parseFile($routingFile);
  889.         $result = [];
  890.         $router $this->router;
  891.         foreach ($routes as $rName => $route) {
  892.             try {
  893.                 $url $router->generate($rName);
  894.             } catch (Exception $e) {
  895.                 continue;
  896.             }
  897.             $priority '0.5';
  898.             $changefreq 'daily';
  899.             if ($rName == 'nissan_homepage') {
  900.                 $priority '1';
  901.                 $changefreq 'always';
  902.             }
  903.             $result[] = [
  904.                 'url' => $url,
  905.                 'priority' => $priority,
  906.                 'changefreq' => $changefreq,
  907.             ];
  908.         }
  909.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  910.         $categories = [];
  911.         /** @var Vehicle $car */
  912.         foreach ($cars as $car) {
  913.             $result[] = [
  914.                 'url' => $router->generate(
  915.                     'nissan_one_car',
  916.                     ['car' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]
  917.                 ),
  918.                 'priority' => '0.8',
  919.                 'changefreq' => 'daily',
  920.             ];
  921.             $result[] = [
  922.                 'url' => $router->generate(
  923.                     'nissan_one_car_configuraion',
  924.                     ['car' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]
  925.                 ),
  926.                 'priority' => '0.8',
  927.                 'changefreq' => 'daily',
  928.             ];
  929.             $catID $car->getCategory()->getId();
  930.             if (!isset($categories[$catID])) {
  931.                 $categories[$catID] = 1;
  932.                 $result[] = [
  933.                     'url' => $router->generate(
  934.                         'nissan_category_catalog',
  935.                         ['category' => $car->getCategory()->getUrl()]
  936.                     ),
  937.                     'priority' => '0.8',
  938.                     'changefreq' => 'daily',
  939.                 ];
  940.             }
  941.         }
  942.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  943.         /** @var Post $one */
  944.         foreach ($post as $one) {
  945.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  946.                 $url $router->generate('nissan_news_single', ['url' => $one->getUrl()]);
  947.             } else {
  948.                 $url $router->generate('nissan_stocks_single', ['url' => $one->getUrl()]);
  949.             }
  950.             $result[] = [
  951.                 'url' => $url,
  952.                 'priority' => '0.3',
  953.                 'changefreq' => 'monthly',
  954.             ];
  955.         }
  956.         $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  957.         foreach ($usedVehicles as $vehicle) {
  958.             $result[] = [
  959.                 'url' => $router->generate('nissan_used_car_single', ['url' => $vehicle->getUrl()]),
  960.                 'priority' => '0.8',
  961.                 'changefreq' => 'daily',
  962.             ];
  963.         }
  964.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  965.         foreach ($models as $model) {
  966.             $result[] = [
  967.                 'url' => $router->generate('nissan_service_regulations_to_model', ['model' => $model['url']]),
  968.                 'priority' => '0.5',
  969.                 'changefreq' => 'daily',
  970.             ];
  971.         }
  972.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  973.         /** @var InStock $vehicle */
  974.         foreach ($inStock as $vehicle) {
  975.             $result[] = [
  976.                 'url' => $router->generate('nissan_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
  977.                 'priority' => '0.5',
  978.                 'changefreq' => 'daily',
  979.             ];
  980.         }
  981.         $pages $this->em
  982.             ->getRepository(ModelRangePages::class)
  983.             ->createQueryBuilder('p')
  984.             ->where('p.dealer = :dealer')
  985.             ->andWhere('p.active = 1')
  986.             ->setParameter('dealer'$this->getDealer())
  987.             ->getQuery()
  988.             ->getResult();
  989.         if (!empty($pages)) {
  990.             foreach ($pages as $page) {
  991.                 $result[] = [
  992.                     'url' => $router->generate('nissan_catalog_pages', ['url' => $page->getUrl()]),
  993.                     'priority' => '0.3',
  994.                     'changefreq' => 'monthly'
  995.                 ];
  996.             }
  997.         }
  998.         $response $this->render(
  999.             '@DcSite/sitemap.xml.twig',
  1000.             ['urls' => $result'route' => 'nissan_sitemap']
  1001.         );
  1002.         $response->headers->set('Content-Type''application/xml');
  1003.         $response->setCharset('utf-8');
  1004.         return $response;
  1005.     }
  1006.     public function volvo(VehicleService $vehicleService): ?Response
  1007.     {
  1008.         $root $this->getParameter('kernel.project_dir');
  1009.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/volvo/volvo_sitemap.yml';
  1010.         $routes Yaml::parseFile($routingFile);
  1011.         $result = [];
  1012.         $router $this->router;
  1013.         foreach ($routes as $rName => $route) {
  1014.             try {
  1015.                 $url $router->generate($rName);
  1016.             } catch (Exception $e) {
  1017.                 continue;
  1018.             }
  1019.             $priority '0.5';
  1020.             $changefreq 'daily';
  1021.             if ($rName == 'volvo_homepage') {
  1022.                 $priority '1';
  1023.                 $changefreq 'always';
  1024.             }
  1025.             if ($rName == 'volvo_public_offer' || 'volvo_basket') {
  1026.                 continue;
  1027.             }
  1028.             $result[] = [
  1029.                 'url' => $url,
  1030.                 'priority' => $priority,
  1031.                 'changefreq' => $changefreq,
  1032.             ];
  1033.         }
  1034.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1035.         /** @var Vehicle $car */
  1036.         foreach ($cars as $car) {
  1037.             $result[] = [
  1038.                 'url' => $router->generate('volvo_card_car', ['url' => $car->getUrl()]),
  1039.                 'priority' => '0.8',
  1040.                 'changefreq' => 'daily',
  1041.             ];
  1042.         }
  1043.         $archiveCars $this->vehicleRepository->getDisabled($this->getDealer());
  1044.         /** @var Vehicle $car */
  1045.         foreach ($archiveCars as $car) {
  1046.             $result[] = [
  1047.                 'url' => $router->generate('volvo_card_car', ['url' => $car->getUrl()]),
  1048.                 'priority' => '0.8',
  1049.                 'changefreq' => 'daily',
  1050.             ];
  1051.         }
  1052.         $post $this
  1053.             ->em
  1054.             ->getRepository(Post::class)
  1055.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1056.         /** @var Post $one */
  1057.         foreach ($post as $one) {
  1058.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1059.                 $url $router->generate('volvo_about_news_single', ['url' => $one->getUrl()]);
  1060.             } else {
  1061.                 $url $router->generate('volvo_special_offers_single', ['url' => $one->getUrl()]);
  1062.             }
  1063.             $result[] = [
  1064.                 'url' => $url,
  1065.                 'priority' => '0.3',
  1066.                 'changefreq' => 'monthly',
  1067.             ];
  1068.         }
  1069.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1070.         foreach ($models as $model) {
  1071.             $result[] = [
  1072.                 'url' => $router->generate('volvo_service_calculation_valuation_model', ['model' => $model['url']]),
  1073.                 'priority' => '0.5',
  1074.                 'changefreq' => 'daily',
  1075.             ];
  1076.         }
  1077.         $pages $this->em
  1078.             ->getRepository(ModelRangePages::class)
  1079.             ->createQueryBuilder('p')
  1080.             ->where('p.dealer = :dealer')
  1081.             ->andWhere('p.active = 1')
  1082.             ->setParameter('dealer'$this->getDealer())
  1083.             ->getQuery()
  1084.             ->getResult();
  1085.         if (!empty($pages)) {
  1086.             foreach ($pages as $page) {
  1087.                 $result[] = [
  1088.                     'url' => $router->generate('volvo_model_lineup_pages', ['url' => $page->getUrl()]),
  1089.                     'priority' => '0.3',
  1090.                     'changefreq' => 'monthly'
  1091.                 ];
  1092.             }
  1093.         }
  1094.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'volvo_sitemap']);
  1095.         $response->headers->set('Content-Type''application/xml');
  1096.         $response->setCharset('utf-8');
  1097.         return $response;
  1098.     }
  1099.     public function landrover(VehicleService $vehicleService): Response
  1100.     {
  1101.         $root $this->getParameter('kernel.project_dir');
  1102.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/landrover/landrover_sitemap.yml';
  1103.         $routes Yaml::parseFile($routingFile);
  1104.         $result = [];
  1105.         $router $this->router;
  1106.         foreach ($routes as $rName => $route) {
  1107.             try {
  1108.                 $url $router->generate($rName);
  1109.             } catch (Exception $e) {
  1110.                 continue;
  1111.             }
  1112.             $p '0.5';
  1113.             $c 'daily';
  1114.             if ($rName == 'landrover_service_acc') {
  1115.                 continue;
  1116.             }
  1117.             if ($rName == 'landrover_homepage') {
  1118.                 $p '1';
  1119.                 $c 'always';
  1120.             }
  1121.             $result[] = [
  1122.                 'url' => $url,
  1123.                 'priority' => $p,
  1124.                 'changefreq' => $c,
  1125.             ];
  1126.         }
  1127.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1128.         /** @var Vehicle $car */
  1129.         foreach ($cars as $car) {
  1130.             $result[] = [
  1131.                 'url' => $router->generate('landrover_card_car', ['car' => $car->getUrl()]),
  1132.                 'priority' => '0.8',
  1133.                 'changefreq' => 'daily',
  1134.             ];
  1135.         }
  1136.         $usedCars $this->vehicleRepository->getUsedByDealer($this->getDealer());
  1137.         /** @var Vehicle $car */
  1138.         foreach ($usedCars as $car) {
  1139.             $result[] = [
  1140.                 'url' => $router->generate('landrover_used_card_car', ['id' => $car->getId()]),
  1141.                 'priority' => '0.8',
  1142.                 'changefreq' => 'daily',
  1143.             ];
  1144.         }
  1145.         $post $this
  1146.             ->em
  1147.             ->getRepository(Post::class)
  1148.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1149.         /** @var Post $one */
  1150.         foreach ($post as $one) {
  1151.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1152.                 $url $router->generate('landrover_aboutus_news_single', ['url' => $one->getUrl()]);
  1153.             } else {
  1154.                 $url $router->generate('landrover_special_offers_single', ['url' => $one->getUrl()]);
  1155.             }
  1156.             $result[] = [
  1157.                 'url' => $url,
  1158.                 'priority' => '0.3',
  1159.                 'changefreq' => 'monthly',
  1160.             ];
  1161.         }
  1162.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1163.         foreach ($models as $model) {
  1164.             $result[] = [
  1165.                 'url' => $router->generate('landrover_service_regulations_to_model', ['model' => $model['url']]),
  1166.                 'priority' => '0.5',
  1167.                 'changefreq' => 'daily',
  1168.             ];
  1169.         }
  1170.         $response $this->render(
  1171.             '@DcSite/sitemap.xml.twig',
  1172.             ['urls' => $result'route' => 'landrover_sitemap']
  1173.         );
  1174.         $response->headers->set('Content-Type''application/xml');
  1175.         $response->setCharset('utf-8');
  1176.         return $response;
  1177.     }
  1178.     public function jaguar(VehicleService $vehicleService): Response
  1179.     {
  1180.         $root $this->getParameter('kernel.project_dir');
  1181.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/jaguar/jaguar_sitemap.yml';
  1182.         $routes Yaml::parseFile($routingFile);
  1183.         $result = [];
  1184.         $router $this->router;
  1185.         foreach ($routes as $rName => $route) {
  1186.             try {
  1187.                 $url $router->generate($rName);
  1188.             } catch (Exception $e) {
  1189.                 continue;
  1190.             }
  1191.             if ($rName == 'jaguar_service_testdrive_form') {
  1192.                 continue;
  1193.             }
  1194.             if ($rName == 'jaguar_homepage') {
  1195.                 $result[] = [
  1196.                     'url' => $url,
  1197.                     'priority' => '1',
  1198.                     'changefreq' => 'always',
  1199.                 ];
  1200.             } else {
  1201.                 $result[] = [
  1202.                     'url' => $url,
  1203.                     'priority' => '0.5',
  1204.                     'changefreq' => 'daily',
  1205.                 ];
  1206.             }
  1207.         }
  1208.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1209.         /** @var Vehicle $car */
  1210.         foreach ($cars as $car) {
  1211.             $result[] = [
  1212.                 'url' => $router->generate('jaguar_card_car', ['car' => $car->getUrl()]),
  1213.                 'priority' => '0.8',
  1214.                 'changefreq' => 'daily',
  1215.             ];
  1216.         }
  1217.         $usedCars $this->vehicleRepository->getUsedByDealer($this->getDealer());
  1218.         /** @var Vehicle $car */
  1219.         foreach ($usedCars as $car) {
  1220.             $result[] = [
  1221.                 'url' => $router->generate('jaguar_used_card_car', ['id' => $car->getId()]),
  1222.                 'priority' => '0.8',
  1223.                 'changefreq' => 'daily',
  1224.             ];
  1225.         }
  1226.         $post $this
  1227.             ->em
  1228.             ->getRepository(Post::class)
  1229.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1230.         /** @var Post $one */
  1231.         foreach ($post as $one) {
  1232.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1233.                 $url $router->generate(
  1234.                     'jaguar_aboutus_news-single',
  1235.                     ['url' => $one->getUrl()],
  1236.                     UrlGeneratorInterface::ABSOLUTE_URL
  1237.                 );
  1238.             } else {
  1239.                 $url $router->generate(
  1240.                     'jaguar_special_offers_single',
  1241.                     ['url' => $one->getUrl()],
  1242.                     UrlGeneratorInterface::ABSOLUTE_URL
  1243.                 );
  1244.             }
  1245.             $result[] = [
  1246.                 'url' => $url,
  1247.                 'priority' => '0.3',
  1248.                 'changefreq' => 'monthly',
  1249.             ];
  1250.         }
  1251.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1252.         foreach ($models as $model) {
  1253.             $result[] = [
  1254.                 'url' => $router->generate('jaguar_service_regulations_to_model', ['model' => $model['url']]),
  1255.                 'priority' => '0.5',
  1256.                 'changefreq' => 'daily',
  1257.             ];
  1258.         }
  1259.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'jaguar_sitemap']);
  1260.         $response->headers->set('Content-Type''application/xml');
  1261.         $response->setCharset('utf-8');
  1262.         return $response;
  1263.     }
  1264.     public function nissanArmada(VehicleService $vehicleService): Response
  1265.     {
  1266.         $root $this->getParameter('kernel.project_dir');
  1267.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/nissan_armada/nissan_armada_sitemap.yml';
  1268.         $routes Yaml::parseFile($routingFile);
  1269.         $result = [];
  1270.         $router $this->router;
  1271.         foreach ($routes as $rName => $route) {
  1272.             try {
  1273.                 $url $router->generate($rName);
  1274.             } catch (Exception $e) {
  1275.                 continue;
  1276.             }
  1277.             $priority '0.5';
  1278.             $changefreq 'daily';
  1279.             if ($rName == 'nissan_armada_homepage') {
  1280.                 $priority '1';
  1281.                 $changefreq 'always';
  1282.             }
  1283.             $result[] = [
  1284.                 'url' => $url,
  1285.                 'priority' => $priority,
  1286.                 'changefreq' => $changefreq,
  1287.             ];
  1288.         }
  1289.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1290.         $categories = [];
  1291.         /** @var Vehicle $car */
  1292.         foreach ($cars as $car) {
  1293.             $result[] = [
  1294.                 'url' => $router->generate(
  1295.                     'nissan_armada_one_car',
  1296.                     ['car' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]
  1297.                 ),
  1298.                 'priority' => '0.8',
  1299.                 'changefreq' => 'daily',
  1300.             ];
  1301.             $result[] = [
  1302.                 'url' => $router->generate(
  1303.                     'nissan_armada_one_car_configuraion',
  1304.                     ['car' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]
  1305.                 ),
  1306.                 'priority' => '0.8',
  1307.                 'changefreq' => 'daily',
  1308.             ];
  1309.             $catID $car->getCategory()->getId();
  1310.             if (!isset($categories[$catID])) {
  1311.                 $categories[$catID] = 1;
  1312.                 $result[] = [
  1313.                     'url' => $router->generate(
  1314.                         'nissan_armada_category_catalog',
  1315.                         ['category' => $car->getCategory()->getUrl()]
  1316.                     ),
  1317.                     'priority' => '0.8',
  1318.                     'changefreq' => 'daily',
  1319.                 ];
  1320.             }
  1321.         }
  1322.         $post $this->em
  1323.             ->getRepository(Post::class)
  1324.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1325.         /** @var Post $one */
  1326.         foreach ($post as $one) {
  1327.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1328.                 $url $router->generate('nissan_armada_news_single', ['url' => $one->getUrl()]);
  1329.             } else {
  1330.                 $url $router->generate('nissan_armada_stocks_single', ['url' => $one->getUrl()]);
  1331.             }
  1332.             $result[] = [
  1333.                 'url' => $url,
  1334.                 'priority' => '0.3',
  1335.                 'changefreq' => 'monthly',
  1336.             ];
  1337.         }
  1338.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1339.         foreach ($models as $model) {
  1340.             $result[] = [
  1341.                 'url' => $router->generate('nissan_armada_service_regulations_to_model', ['model' => $model['url']]),
  1342.                 'priority' => '0.5',
  1343.                 'changefreq' => 'daily',
  1344.             ];
  1345.         }
  1346.         $pages $this->em
  1347.             ->getRepository(ModelRangePages::class)
  1348.             ->createQueryBuilder('p')
  1349.             ->where('p.dealer = :dealer')
  1350.             ->andWhere('p.active = 1')
  1351.             ->setParameter('dealer'$this->getDealer())
  1352.             ->getQuery()
  1353.             ->getResult();
  1354.         if (!empty($pages)) {
  1355.             foreach ($pages as $page) {
  1356.                 $result[] = [
  1357.                     'url' => $router->generate('nissan_armada_catalog_pages', ['url' => $page->getUrl()]),
  1358.                     'priority' => '0.3',
  1359.                     'changefreq' => 'monthly'
  1360.                 ];
  1361.             }
  1362.         }
  1363.         $response $this->render(
  1364.             '@DcSite/sitemap.xml.twig',
  1365.             ['urls' => $result'route' => 'nissan_armada_sitemap']
  1366.         );
  1367.         $response->headers->set('Content-Type''application/xml');
  1368.         $response->setCharset('utf-8');
  1369.         return $response;
  1370.     }
  1371.     public function palmira(Request $requestVehicleService $vehicleServiceInStockRepository $inStockRepositoryModel): Response
  1372.     {
  1373.         $root $this->getParameter('kernel.project_dir');
  1374.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/toyota_odessa/toyota_odessa_sitemap.yml';
  1375.         $routes Yaml::parseFile($routingFile);
  1376.         $result = [];
  1377.         $router $this->router;
  1378.         foreach ($routes as $rName => $route) {
  1379.             $p '0.5';
  1380.             $c 'daily';
  1381.             if ($rName == 'toyota_odessa_homepage') {
  1382.                 $p '1';
  1383.                 $c 'always';
  1384.             }
  1385.             try {
  1386.                 $url $router->generate($rName);
  1387.             } catch (Exception $e) {
  1388.                 continue;
  1389.             }
  1390.             if ($rName == 'toyota_odessa_basket') {
  1391.                 continue;
  1392.             } else {
  1393.                 $result[] = [
  1394.                     'url' => $url,
  1395.                     'priority' => '0.5',
  1396.                     'changefreq' => 'daily',
  1397.                 ];
  1398.             }
  1399.         }
  1400.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1401.         /** @var Vehicle $car */
  1402.         foreach ($cars as $car) {
  1403.             $result[] = [
  1404.                 'url' => $router->generate('toyota_odessa_one_car', ['car' => $car->getUrl()]),
  1405.                 'priority' => '0.8',
  1406.                 'changefreq' => 'daily',
  1407.             ];
  1408.             $result[] = [
  1409.                 'url' => $router->generate('toyota_odessa_card_car_configuraion', ['car' => $car->getUrl()]),
  1410.                 'priority' => '0.5',
  1411.                 'changefreq' => 'daily',
  1412.             ];
  1413.         }
  1414.         $carList $this->getModelMenuItems($request->getLocale(), 'small');
  1415.         foreach ($carList as $category) {
  1416.             $result[] = [
  1417.                 'url' => $router->generate('toyota_odessa_car_catalog_category', ['category' => $category['url']]),
  1418.                 'priority' => '0.5',
  1419.                 'changefreq' => 'daily',
  1420.             ];
  1421.         }
  1422.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  1423.         /** @var InStock $vehicle */
  1424.         foreach ($inStock as $vehicle) {
  1425.             $result[] = [
  1426.                 'url' => $router->generate('toyota_odessa_car_in_stock_car', ['url' => $vehicle->getUrl()]),
  1427.                 'priority' => '0.5',
  1428.                 'changefreq' => 'daily',
  1429.             ];
  1430.         }
  1431.         $post $this->em
  1432.             ->getRepository(Post::class)
  1433.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1434.         /** @var Post $one */
  1435.         foreach ($post as $one) {
  1436.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1437.                 $url $router->generate('toyota_odessa_about_news_single', ['url' => $one->getUrl()]);
  1438.             } else {
  1439.                 $url $router->generate('toyota_odessa_action_single', ['url' => $one->getUrl()]);
  1440.             }
  1441.             $result[] = [
  1442.                 'url' => $url,
  1443.                 'priority' => '0.3',
  1444.                 'changefreq' => 'monthly',
  1445.             ];
  1446.         }
  1447.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1448.         foreach ($models as $model) {
  1449.             if ($model['url'] == '') {
  1450.                 continue;
  1451.             }
  1452.             $result[] = [
  1453.                 'url' => $router->generate('toyota_odessa_service_regulations_to_model', ['model' => $model['url']]),
  1454.                 'priority' => '0.5',
  1455.                 'changefreq' => 'daily',
  1456.             ];
  1457.         }
  1458.         $result[] = [
  1459.             'url' => $router->generate('toyota_odessa_action_list', ['type' => 'stocks_cars']),
  1460.             'priority' => '0.3',
  1461.             'changefreq' => 'monthly',
  1462.         ];
  1463.         $result[] = [
  1464.             'url' => $router->generate('toyota_odessa_action_list', ['type' => 'stocks_service']),
  1465.             'priority' => '0.3',
  1466.             'changefreq' => 'monthly',
  1467.         ];
  1468.         $pages $this->em
  1469.             ->getRepository(ModelRangePages::class)
  1470.             ->createQueryBuilder('p')
  1471.             ->where('p.dealer = :dealer')
  1472.             ->andWhere('p.active = 1')
  1473.             ->setParameter('dealer'$this->getDealer())
  1474.             ->getQuery()
  1475.             ->getResult();
  1476.         if (!empty($pages)) {
  1477.             foreach ($pages as $page) {
  1478.                 $result[] = [
  1479.                     'url' => $router->generate('toyota_odessa_catalog_list_pages', ['url' => $page->getUrl()]),
  1480.                     'priority' => '0.3',
  1481.                     'changefreq' => 'monthly'
  1482.                 ];
  1483.             }
  1484.         }
  1485.         $response $this->render(
  1486.             '@DcSite/sitemap.xml.twig',
  1487.             ['urls' => $result'route' => 'toyota_odessa_sitemap']
  1488.         );
  1489.         $response->headers->set('Content-Type''application/xml');
  1490.         $response->setCharset('utf-8');
  1491.         return $response;
  1492.     }
  1493.     public function lexus(Request $requestVehicleService $vehicleServicePagesService $pagesServiceInStockRepository $inStockRepositoryModel): Response
  1494.     {
  1495.         $root $this->getParameter('kernel.project_dir');
  1496.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/lexus/lexus_sitemap.yml';
  1497.         $routes Yaml::parseFile($routingFile);
  1498.         $result = [];
  1499.         $router $this->router;
  1500.         foreach ($routes as $rName => $route) {
  1501.             $priority '0.5';
  1502.             $changefreq 'daily';
  1503.             if ($rName == 'lexus_homepage') {
  1504.                 $priority '1';
  1505.                 $changefreq 'always';
  1506.             }
  1507.             try {
  1508.                 $url $router->generate($rName);
  1509.             } catch (Exception $e) {
  1510.                 continue;
  1511.             }
  1512.             $result[] = [
  1513.                 'url' => $url,
  1514.                 'priority' => $priority,
  1515.                 'changefreq' => $changefreq,
  1516.             ];
  1517.         }
  1518.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1519.         /** @var Vehicle $car */
  1520.         foreach ($cars as $car) {
  1521.             $result[] = [
  1522.                 'url' => $router->generate('lexus_configurator_action', ['url' => $car->getUrl()]),
  1523.                 'priority' => '0.8',
  1524.                 'changefreq' => 'daily',
  1525.             ];
  1526.             $result[] = [
  1527.                 'url' => $router->generate('lexus_card_car', ['url' => $car->getUrl()]),
  1528.                 'priority' => '0.8',
  1529.                 'changefreq' => 'daily',
  1530.             ];
  1531.             $result[] = [
  1532.                 'url' => $router->generate('lexus_card_car_configuraion', ['url' => $car->getUrl()]),
  1533.                 'priority' => '0.8',
  1534.                 'changefreq' => 'daily',
  1535.             ];
  1536.         }
  1537.         foreach ($cars as $car) {
  1538.             $categories[] = $car->getCategory()->getUrl();
  1539.         }
  1540.         foreach (array_unique($categories) as $category) {
  1541.             $result[] = [
  1542.                 'url' => $router->generate('lexus_car_catalog_category', ['url' => $category]),
  1543.                 'priority' => '0.5',
  1544.                 'changefreq' => 'daily',
  1545.             ];
  1546.         }
  1547.         $group $pagesService->setLang($request->getLocale())->getPages($this->getDealer());
  1548.         foreach ($group as $item) {
  1549.             $result[] = [
  1550.                 'url' => $router->generate('lexus_car_catalog_pages', ['url' => $item['url']]),
  1551.                 'priority' => '0.5',
  1552.                 'changefreq' => 'daily',
  1553.             ];
  1554.         }
  1555.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  1556.         foreach ($inStock as $car) {
  1557.             $result[] = [
  1558.                 'url' => $router->generate('lexus_car_stock_single', ['url' => $car->getUrl()]),
  1559.                 'priority' => '0.5',
  1560.                 'changefreq' => 'daily',
  1561.             ];
  1562.         }
  1563.         $usedCars $this->vehicleRepository->getUsed($this->getDealer(), true);
  1564.         /** @var Vehicle $car */
  1565.         foreach ($usedCars as $car) {
  1566.             $result[] = [
  1567.                 'url' => $router->generate('lexus_used_car_single', ['url' => $car->getUrl()]),
  1568.                 'priority' => '0.5',
  1569.                 'changefreq' => 'daily',
  1570.             ];
  1571.         }
  1572.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1573.         /** @var Post $one */
  1574.         foreach ($post as $one) {
  1575.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1576.                 $url $router->generate('lexus_about_us_news_single', ['url' => $one->getUrl()]);
  1577.             } else {
  1578.                 $url $router->generate('lexus_stocks_single', ['url' => $one->getUrl()]);
  1579.             }
  1580.             $result[] = [
  1581.                 'url' => $url,
  1582.                 'priority' => '0.3',
  1583.                 'changefreq' => 'monthly',
  1584.             ];
  1585.         }
  1586.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1587.         foreach ($models as $model) {
  1588.             if ($model['url'] == '') {
  1589.                 continue;
  1590.             }
  1591.             $result[] = [
  1592.                 'url' => $router->generate('lexus_service_price_for_car_model', ['model' => $model['url']]),
  1593.                 'priority' => '0.5',
  1594.                 'changefreq' => 'daily',
  1595.             ];
  1596.         }
  1597.         $response $this->render(
  1598.             '@DcSite/sitemap.xml.twig',
  1599.             ['urls' => $result'route' => 'toyota_odessa_sitemap']
  1600.         );
  1601.         $response->headers->set('Content-Type''application/xml');
  1602.         $response->setCharset('utf-8');
  1603.         return $response;
  1604.     }
  1605.     public function toyota(Request $requestInStockRepository $inStockRepositoryModelServicePageService $servicePageService): Response
  1606.     {
  1607.         $root $this->getParameter('kernel.project_dir');
  1608.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/toyota/toyota_sitemap.yml';
  1609.         $routes Yaml::parseFile($routingFile);
  1610.         $result = [];
  1611.         $router $this->router;
  1612.         foreach ($routes as $rName => $route) {
  1613.             try {
  1614.                 $url $router->generate($rName);
  1615.             } catch (Exception $e) {
  1616.                 continue;
  1617.             }
  1618.             if ($rName == 'toyota_about_mytoyota' || $rName == 'toyota_configurator_action' || $rName == 'toyota_accessories') {
  1619.                 continue;
  1620.             }
  1621.             if ($rName == 'toyota_homepage') {
  1622.                 $result[] = [
  1623.                     'url' => $url,
  1624.                     'priority' => '1',
  1625.                     'changefreq' => 'always',
  1626.                 ];
  1627.             } else if (!in_array($rName, ['toyota_service_replacement_car_form''toyota_service_replacement_car'])
  1628.                 && !str_contains($url'/api/')) {
  1629.                 $result[] = [
  1630.                     'url' => $url,
  1631.                     'priority' => '0.5',
  1632.                     'changefreq' => 'daily',
  1633.                 ];
  1634.             }
  1635.         }
  1636.         $models Toyota\CarController::MODEL_FRAME;
  1637.         foreach ($models as $model) {
  1638.             $result[] = [
  1639.                 'url' => $router->generate('toyota_secondhand_model', ['model' => $model]),
  1640.                 'priority' => '0.5',
  1641.                 'changefreq' => 'daily',
  1642.             ];
  1643.         }
  1644.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  1645.         /** @var InStock $vehicle */
  1646.         foreach ($inStock as $vehicle) {
  1647.             $result[] = [
  1648.                 'url' => $router->generate('toyota_in_stock_car', ['url' => $vehicle->getUrl()]),
  1649.                 'priority' => '0.8',
  1650.                 'changefreq' => 'monthly',
  1651.             ];
  1652.         }
  1653.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1654.         /** @var Vehicle $car */
  1655.         foreach ($cars as $car) {
  1656.             if ($car->getIsUsed()) {
  1657.                 continue;
  1658.             } else {
  1659.                 $result[] = [
  1660.                     'url' => $router->generate('toyota_one_car', ['car' => $car->getUrl()]),
  1661.                     'priority' => '0.8',
  1662.                     'changefreq' => 'daily',
  1663.                 ];
  1664.                 $result[] = [
  1665.                     'url' => $router->generate('toyota_card_car_configuraion', ['car' => $car->getUrl()]),
  1666.                     'priority' => '0.5',
  1667.                     'changefreq' => 'daily',
  1668.                 ];
  1669.             }
  1670.         }
  1671.         $services $servicePageService->getServiceByDealer($this->getDealer());
  1672.         foreach ($services as $service) {
  1673.             foreach ($service['pages'] as $page) {
  1674.                 $result[] = [
  1675.                     'url' => $router->generate('toyota_service_page', ['url' => $page->getUrl()]),
  1676.                     'priority' => '0.5',
  1677.                     'changefreq' => 'daily',
  1678.                 ];
  1679.             }
  1680.         }
  1681.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1682.         /** @var Post $one */
  1683.         foreach ($post as $one) {
  1684.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1685.                 $url $router->generate('toyota_about_news_single', ['url' => $one->getUrl()]);
  1686.             } else {
  1687.                 $url $router->generate('toyota_action_single', ['url' => $one->getUrl()]);
  1688.             }
  1689.             $result[] = [
  1690.                 'url' => $url,
  1691.                 'priority' => '0.3',
  1692.                 'changefreq' => 'monthly',
  1693.             ];
  1694.         }
  1695.         $brandId $this->getDealer()->getBrand()->getId();
  1696.         $variations $this->em
  1697.             ->getRepository(ServiceVariation::class)
  1698.             ->getRegulationVariations($this->getDealer(), $brandId);
  1699.         $uniqueModel = [];
  1700.         foreach ($variations as $variation) {
  1701.             $model $variation->getModel();
  1702.             if ($model->getUrl() == '') {
  1703.                 continue;
  1704.             }
  1705.             if (!in_array($model->getUrl(), $uniqueModel)) {
  1706.                 $result[] = [
  1707.                     'url' => $router->generate('toyota_service_regulations_to_model', ['model' => $model->getUrl()]),
  1708.                     'priority' => '0.3',
  1709.                     'changefreq' => 'monthly',
  1710.                 ];
  1711.                 $uniqueModel[] = $model->getUrl();
  1712.             }
  1713.         }
  1714.         $carList $this->getModelMenuItems($request->getLocale(), 'small');
  1715.         foreach ($carList as $category) {
  1716.             $result[] = [
  1717.                 'url' => $router->generate('toyota_car_catalog_category', ['category' => $category['url']]),
  1718.                 'priority' => '0.3',
  1719.                 'changefreq' => 'monthly',
  1720.             ];
  1721.         }
  1722.         $pages $this->em
  1723.             ->getRepository(ModelRangePages::class)
  1724.             ->createQueryBuilder('p')
  1725.             ->where('p.dealer = :dealer')
  1726.             ->andWhere('p.active = 1')
  1727.             ->setParameter('dealer'$this->getDealer())
  1728.             ->getQuery()
  1729.             ->getResult();
  1730.         if (!empty($pages)) {
  1731.             foreach ($pages as $page) {
  1732.                 $result[] = [
  1733.                     'url' => $router->generate('toyota_car_catalog_pages', ['url' => $page->getUrl()]),
  1734.                     'priority' => '0.3',
  1735.                     'changefreq' => 'monthly'
  1736.                 ];
  1737.             }
  1738.         }
  1739.         $response $this->render(
  1740.             '@DcSite/sitemap.xml.twig',
  1741.             ['urls' => $result'route' => 'toyota_odessa_sitemap']
  1742.         );
  1743.         $response->headers->set('Content-Type''application/xml');
  1744.         $response->setCharset('utf-8');
  1745.         return $response;
  1746.     }
  1747.     public function toyotaBorispol(Request $requestServicePageService $servicePageService): Response
  1748.     {
  1749.         $root $this->getParameter('kernel.project_dir');
  1750.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/toyota_borispol/toyota_borispol_sitemap.yml';
  1751.         $routes Yaml::parseFile($routingFile);
  1752.         $result = [];
  1753.         $router $this->router;
  1754.         foreach ($routes as $rName => $route) {
  1755.             try {
  1756.                 $url $router->generate($rName);
  1757.             } catch (Exception $e) {
  1758.                 continue;
  1759.             }
  1760.             if ($rName == 'toyota_borispol_service_page' ||
  1761.                 $rName == 'toyota_borispol_used_car_model' ||
  1762.                 $rName == 'toyota_borispol_service_regulations_to_model' ||
  1763.                 $rName == 'toyota_borispol_service_replacement_car_form' ||
  1764.                 $rName == 'toyota_borispol_basket' ||
  1765.                 $rName == 'toyota_borispol_service_order_rent_cars' ||
  1766.                 $rName == 'toyota_borispol_actions_single') {
  1767.                 continue;
  1768.             } else {
  1769.                 $result[] = [
  1770.                     'url' => $url,
  1771.                     'priority' => '0.5',
  1772.                     'changefreq' => 'daily',
  1773.                 ];
  1774.             }
  1775.             if ($rName == 'toyota_borispol_homepage') {
  1776.                 $result[] = [
  1777.                     'url' => $url,
  1778.                     'priority' => '1',
  1779.                     'changefreq' => 'always',
  1780.                 ];
  1781.             }
  1782.         }
  1783.         $models CarController::MODEL_FRAME;
  1784.         foreach ($models as $model) {
  1785.             $result[] = [
  1786.                 'url' => $router->generate('toyota_borispol_used_car_model', ['model' => $model]),
  1787.                 'priority' => '0.5',
  1788.                 'changefreq' => 'daily',
  1789.             ];
  1790.         }
  1791.         $serviceRegulationExclusion = [
  1792.             'yaris-hybrid',
  1793.             'yaris-cross-hybrid',
  1794.             'corolla-hybrid',
  1795.             'camry-hybrid',
  1796.             'c-hr-hybrid',
  1797.             'highlander-hybrid',
  1798.             'rav4-hybrid',
  1799.             'yaris-cross-hybrid',
  1800.             'yaris-hybrid',
  1801.             'camry-hybrid',
  1802.             'corolla-hybrid',
  1803.             'c-hr-hybrid',
  1804.             'rav4-hybrid',
  1805.             'highlander-hybrid',
  1806.         ];
  1807.         foreach ($models as $model) {
  1808.             if (!in_array($model$serviceRegulationExclusion)) {
  1809.                 $result[] = [
  1810.                     'url' => $router->generate('toyota_borispol_service_regulations_to_model', ['model' => $model]),
  1811.                     'priority' => '0.5',
  1812.                     'changefreq' => 'daily',
  1813.                 ];
  1814.             }
  1815.         }
  1816.         $posts_car $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer(), PostModel::ACTION_TYPE_CAR);
  1817.         $posts_service $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer(), PostModel::ACTION_TYPE_SERVICE);
  1818.         $posts array_merge($posts_car$posts_service);
  1819.         foreach ($posts as $post) {
  1820.             $result[] = [
  1821.                 'url' => $router->generate('toyota_borispol_actions_single', ['url' => $post->getUrl()]),
  1822.                 'priority' => '0.5',
  1823.                 'changefreq' => 'daily',
  1824.             ];
  1825.         }
  1826.         $services $servicePageService->getServiceByDealer($this->getDealer());
  1827.         foreach ($services as $service) {
  1828.             foreach ($service['pages'] as $page) {
  1829.                 $result[] = [
  1830.                     'url' => $router->generate('toyota_borispol_service_page', ['url' => $page->getUrl()]),
  1831.                     'priority' => '0.5',
  1832.                     'changefreq' => 'daily',
  1833.                 ];
  1834.             }
  1835.         }
  1836.         $posts $this->em->getRepository(Post::class)->getNewsByDealer($this->getDealer());
  1837.         /** @var Post $post */
  1838.         foreach ($posts as $post) {
  1839.             if ($post->getPostType() == PostModel::POST_TYPE_NEWS) {
  1840.                 $url $router->generate('toyota_borispol_news_single', ['url' => $post->getUrl()]);
  1841.             } else {
  1842.                 $url $router->generate('toyota_borispol_actions_single', ['url' => $post->getUrl()]);
  1843.             }
  1844.             $result[] = [
  1845.                 'url' => $url,
  1846.                 'priority' => '0.3',
  1847.                 'changefreq' => 'monthly',
  1848.             ];
  1849.         }
  1850.         $response $this->render('@DcSite/sitemap.xml.twig', [
  1851.             'urls' => $result,
  1852.             'route' => 'toyota_odessa_sitemap'
  1853.         ]);
  1854.         $response->headers->set('Content-Type''application/xml');
  1855.         $response->setCharset('utf-8');
  1856.         return $response;
  1857.     }
  1858.     public function unicommerce(Request $request): Response
  1859.     {
  1860.         $root $this->getParameter('kernel.project_dir');
  1861.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/unicommerce/unicommerce_sitemap.yml';
  1862.         $routes Yaml::parseFile($routingFile);
  1863.         $result = [];
  1864.         $router $this->router;
  1865.         foreach ($routes as $rName => $route) {
  1866.             try {
  1867.                 $url $router->generate($rName);
  1868.             } catch (Exception $e) {
  1869.                 continue;
  1870.             }
  1871.             if ($rName == 'unicommerce_homepage') {
  1872.                 $result[] = [
  1873.                     'url' => $url,
  1874.                     'priority' => '1',
  1875.                     'changefreq' => 'always',
  1876.                 ];
  1877.             } else {
  1878.                 $result[] = [
  1879.                     'url' => $url,
  1880.                     'priority' => '0.5',
  1881.                     'changefreq' => 'daily',
  1882.                 ];
  1883.             }
  1884.         }
  1885.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1886.         foreach ($cars as $car) {
  1887.             $result[] = [
  1888.                 'url' => $router->generate('unicommerce_car_single_without_group',
  1889.                     ['vehicleUrl' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]),
  1890.                 'priority' => '0.5',
  1891.                 'changefreq' => 'daily',
  1892.             ];
  1893.         }
  1894.         $vehicleCategories $this->em->getRepository(Category::class)->findBy(['vehicle_type' => 6]);
  1895.         foreach ($vehicleCategories as $category) {
  1896.             $result[] = [
  1897.                 'url' => $router->generate('unicommerce_car_catalog', ['category' => $category->getUrl()]),
  1898.                 'priority' => '0.5',
  1899.                 'changefreq' => 'daily',
  1900.             ];
  1901.         }
  1902.         $response $this->render('@DcSite/sitemap.xml.twig', [
  1903.             'urls' => $result,
  1904.             'route' => 'unicommerce_sitemap'
  1905.         ]);
  1906.         $response->headers->set('Content-Type''application/xml');
  1907.         $response->setCharset('utf-8');
  1908.         return $response;
  1909.     }
  1910.     public function citroen(InStockRepository $inStockRepositoryModelVehicleService $vehicleService): Response
  1911.     {
  1912.         $root $this->getParameter('kernel.project_dir');
  1913.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/citroen/citroen_sitemap.yml';
  1914.         $routes Yaml::parseFile($routingFile);
  1915.         $result = [];
  1916.         $router $this->router;
  1917.         foreach ($routes as $rName => $route) {
  1918.             try {
  1919.                 $url $router->generate($rName);
  1920.             } catch (Exception $e) {
  1921.                 continue;
  1922.             }
  1923.             if ($rName == 'citroen_homepage') {
  1924.                 $result[] = [
  1925.                     'url' => $url,
  1926.                     'priority' => '1',
  1927.                     'changefreq' => 'always',
  1928.                 ];
  1929.             } else {
  1930.                 $result[] = [
  1931.                     'url' => $url,
  1932.                     'priority' => '0.5',
  1933.                     'changefreq' => 'daily',
  1934.                 ];
  1935.             }
  1936.         }
  1937.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1938.         /** @var Vehicle $car */
  1939.         foreach ($cars as $car) {
  1940.             $result[] = [
  1941.                 'url' => $router->generate('citroen_card_car', ['car' => $car->getUrl()]),
  1942.                 'priority' => '0.8',
  1943.                 'changefreq' => 'daily',
  1944.             ];
  1945.             $result[] = [
  1946.                 'url' => $router->generate('citroen_card_car_configuraion', ['car' => $car->getUrl()]),
  1947.                 'priority' => '0.8',
  1948.                 'changefreq' => 'daily',
  1949.             ];
  1950.         }
  1951.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  1952.         /** @var InStock $vehicle */
  1953.         foreach ($inStock as $vehicle) {
  1954.             $result[] = [
  1955.                 'url' => $router->generate('citroen_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
  1956.                 'priority' => '0.3',
  1957.                 'changefreq' => 'monthly',
  1958.             ];
  1959.         }
  1960.         $post $this->em
  1961.             ->getRepository(Post::class)
  1962.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1963.         /** @var Post $one */
  1964.         foreach ($post as $one) {
  1965.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1966.                 $url $router->generate('citroen_about_news_single', ['url' => $one->getUrl()]);
  1967.             } else {
  1968.                 $url $router->generate('citroen_stocks_single', ['url' => $one->getUrl()]);
  1969.             }
  1970.             $result[] = [
  1971.                 'url' => $url,
  1972.                 'priority' => '0.3',
  1973.                 'changefreq' => 'monthly',
  1974.             ];
  1975.         }
  1976.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1977.         foreach ($models as $model) {
  1978.             $result[] = [
  1979.                 'url' => $router->generate('citroen_service_regulations_to_model', ['model' => $model['url']]),
  1980.                 'priority' => '0.5',
  1981.                 'changefreq' => 'daily',
  1982.             ];
  1983.         }
  1984.         $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  1985.         foreach ($usedVehicles as $vehicle) {
  1986.             $result[] = [
  1987.                 'url' => $router->generate('citroen_used_car_single', ['url' => $vehicle->getUrl()]),
  1988.                 'priority' => '0.8',
  1989.                 'changefreq' => 'daily',
  1990.             ];
  1991.         }
  1992.         $pages $this->em
  1993.             ->getRepository(ModelRangePages::class)
  1994.             ->createQueryBuilder('p')
  1995.             ->where('p.dealer = :dealer')
  1996.             ->andWhere('p.active = 1')
  1997.             ->setParameter('dealer'$this->getDealer())
  1998.             ->getQuery()
  1999.             ->getResult();
  2000.         if (!empty($pages)) {
  2001.             foreach ($pages as $page) {
  2002.                 $result[] = [
  2003.                     'url' => $router->generate('citroen_model_range_pages', ['url' => $page->getUrl()]),
  2004.                     'priority' => '0.3',
  2005.                     'changefreq' => 'monthly'
  2006.                 ];
  2007.             }
  2008.         }
  2009.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'honda_sitemap']);
  2010.         $response->headers->set('Content-Type''application/xml');
  2011.         $response->setCharset('utf-8');
  2012.         return $response;
  2013.     }
  2014.     public function honda(VehicleService $vehicleService): Response
  2015.     {
  2016.         $root $this->getParameter('kernel.project_dir');
  2017.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/honda/honda_sitemap.yml';
  2018.         $routes Yaml::parseFile($routingFile);
  2019.         $result = [];
  2020.         $router $this->router;
  2021.         foreach ($routes as $rName => $route) {
  2022.             try {
  2023.                 $url $router->generate($rName);
  2024.             } catch (Exception $e) {
  2025.                 continue;
  2026.             }
  2027.             if ($rName == 'honda_homepage') {
  2028.                 $result[] = [
  2029.                     'url' => $url,
  2030.                     'priority' => '1',
  2031.                     'changefreq' => 'always',
  2032.                 ];
  2033.             } else {
  2034.                 $result[] = [
  2035.                     'url' => $url,
  2036.                     'priority' => '0.5',
  2037.                     'changefreq' => 'daily',
  2038.                 ];
  2039.             }
  2040.         }
  2041.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  2042.         /** @var Vehicle $car */
  2043.         foreach ($cars as $car) {
  2044.             $result[] = [
  2045.                 'url' => $router->generate('honda_card_car', ['car' => $car->getUrl()]),
  2046.                 'priority' => '0.8',
  2047.                 'changefreq' => 'daily',
  2048.             ];
  2049.             $result[] = [
  2050.                 'url' => $router->generate('honda_card_car_configuraion', ['car' => $car->getUrl()]),
  2051.                 'priority' => '0.8',
  2052.                 'changefreq' => 'daily',
  2053.             ];
  2054.         }
  2055.         $post $this->em
  2056.             ->getRepository(Post::class)
  2057.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2058.         /** @var Post $one */
  2059.         foreach ($post as $one) {
  2060.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2061.                 $url $router->generate('honda_news_single', ['url' => $one->getUrl()]);
  2062.             } else {
  2063.                 $url $router->generate('honda_stocks_single', ['url' => $one->getUrl()]);
  2064.             }
  2065.             $result[] = [
  2066.                 'url' => $url,
  2067.                 'priority' => '0.3',
  2068.                 'changefreq' => 'monthly',
  2069.             ];
  2070.         }
  2071.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  2072.         foreach ($models as $model) {
  2073.             if ($model['url'] == '') {
  2074.                 continue;
  2075.             }
  2076.             $result[] = [
  2077.                 'url' => $router->generate('honda_service_honda_regulations_to_model', ['model' => $model['url']]),
  2078.                 'priority' => '0.5',
  2079.                 'changefreq' => 'daily',
  2080.             ];
  2081.         }
  2082.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer(), 32);
  2083.         foreach ($models as $model) {
  2084.             $result[] = [
  2085.                 'url' => $router->generate('honda_service_acura_regulations_to_model', ['model' => $model['url']]),
  2086.                 'priority' => '0.5',
  2087.                 'changefreq' => 'daily',
  2088.             ];
  2089.         }
  2090.         $pages $this->em
  2091.             ->getRepository(ModelRangePages::class)
  2092.             ->createQueryBuilder('p')
  2093.             ->where('p.dealer = :dealer')
  2094.             ->andWhere('p.active = 1')
  2095.             ->setParameter('dealer'$this->getDealer())
  2096.             ->getQuery()
  2097.             ->getResult();
  2098.         if (!empty($pages)) {
  2099.             foreach ($pages as $page) {
  2100.                 $result[] = [
  2101.                     'url' => $router->generate('honda_model_lineup_pages', ['url' => $page->getUrl()]),
  2102.                     'priority' => '0.3',
  2103.                     'changefreq' => 'monthly'
  2104.                 ];
  2105.             }
  2106.         }
  2107.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'honda_sitemap']);
  2108.         $response->headers->set('Content-Type''application/xml');
  2109.         $response->setCharset('utf-8');
  2110.         return $response;
  2111.     }
  2112.     public function mg(VehicleService $vehicleService): Response
  2113.     {
  2114.         $root $this->getParameter('kernel.project_dir');
  2115.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/morris_garage/morris_garage_sitemap.yml';
  2116.         $routes Yaml::parseFile($routingFile);
  2117.         $result = [];
  2118.         $router $this->router;
  2119.         foreach ($routes as $rName => $route) {
  2120.             try {
  2121.                 $url $router->generate($rName);
  2122.             } catch (Exception $e) {
  2123.                 continue;
  2124.             }
  2125.             if ($rName == 'mg_homepage') {
  2126.                 $result[] = [
  2127.                     'url' => $url,
  2128.                     'priority' => '1',
  2129.                     'changefreq' => 'always',
  2130.                 ];
  2131.             } else {
  2132.                 $result[] = [
  2133.                     'url' => $url,
  2134.                     'priority' => '0.5',
  2135.                     'changefreq' => 'daily',
  2136.                 ];
  2137.             }
  2138.         }
  2139.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  2140.         /** @var Vehicle $car */
  2141.         foreach ($cars as $car) {
  2142.             $result[] = [
  2143.                 'url' => $router->generate('mg_card_car', ['car' => $car->getUrl()]),
  2144.                 'priority' => '0.8',
  2145.                 'changefreq' => 'daily',
  2146.             ];
  2147.             $result[] = [
  2148.                 'url' => $router->generate('mg_card_car_configuraion', ['car' => $car->getUrl()]),
  2149.                 'priority' => '0.8',
  2150.                 'changefreq' => 'daily',
  2151.             ];
  2152.         }
  2153.         $post $this->em
  2154.             ->getRepository(Post::class)
  2155.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2156.         /** @var Post $one */
  2157.         foreach ($post as $one) {
  2158.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2159.                 $url $router->generate('mg_about_news_single', ['url' => $one->getUrl()]);
  2160.             }
  2161.             $result[] = [
  2162.                 'url' => $url,
  2163.                 'priority' => '0.3',
  2164.                 'changefreq' => 'monthly',
  2165.             ];
  2166.         }
  2167.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  2168.         foreach ($models as $model) {
  2169.             if ($model['url'] == '') {
  2170.                 continue;
  2171.             }
  2172.             $result[] = [
  2173.                 'url' => $router->generate('mg_service_regulations_to_model', ['model' => $model['url']]),
  2174.                 'priority' => '0.5',
  2175.                 'changefreq' => 'daily',
  2176.             ];
  2177.         }
  2178.         $pages $this->em
  2179.             ->getRepository(ModelRangePages::class)
  2180.             ->createQueryBuilder('p')
  2181.             ->where('p.dealer = :dealer')
  2182.             ->andWhere('p.active = 1')
  2183.             ->setParameter('dealer'$this->getDealer())
  2184.             ->getQuery()
  2185.             ->getResult();
  2186.         if (!empty($pages)) {
  2187.             foreach ($pages as $page) {
  2188.                 $result[] = [
  2189.                     'url' => $router->generate('mg_model_lineup_pages', ['url' => $page->getUrl()]),
  2190.                     'priority' => '0.3',
  2191.                     'changefreq' => 'monthly'
  2192.                 ];
  2193.             }
  2194.         }
  2195.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'mg_sitemap']);
  2196.         $response->headers->set('Content-Type''application/xml');
  2197.         $response->setCharset('utf-8');
  2198.         return $response;
  2199.     }
  2200.     public function opel(VehicleService $vehicleService): Response
  2201.     {
  2202.         $root $this->getParameter('kernel.project_dir');
  2203.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/opel/opel_sitemap.yml';
  2204.         $routes Yaml::parseFile($routingFile);
  2205.         $result = [];
  2206.         $router $this->router;
  2207.         foreach ($routes as $rName => $route) {
  2208.             try {
  2209.                 $url $router->generate($rName);
  2210.             } catch (Exception $e) {
  2211.                 continue;
  2212.             }
  2213.             if ($rName == 'opel_about_quality_policy' || 'opel_public_offer') {
  2214.                 continue;
  2215.             }
  2216.             if ($rName == 'opel_homepage') {
  2217.                 $result[] = [
  2218.                     'url' => $url,
  2219.                     'priority' => '1',
  2220.                     'changefreq' => 'always',
  2221.                 ];
  2222.             } else {
  2223.                 $result[] = [
  2224.                     'url' => $url,
  2225.                     'priority' => '0.5',
  2226.                     'changefreq' => 'daily',
  2227.                 ];
  2228.             }
  2229.         }
  2230.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  2231.         /** @var Vehicle $car */
  2232.         foreach ($cars as $car) {
  2233.             $result[] = [
  2234.                 'url' => $router->generate('opel_card_car', ['car' => $car->getUrl()]),
  2235.                 'priority' => '0.8',
  2236.                 'changefreq' => 'daily',
  2237.             ];
  2238.             $result[] = [
  2239.                 'url' => $router->generate('opel_card_car_configuraion', ['car' => $car->getUrl()]),
  2240.                 'priority' => '0.8',
  2241.                 'changefreq' => 'daily',
  2242.             ];
  2243.         }
  2244.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2245.         /** @var Post $one */
  2246.         foreach ($post as $one) {
  2247.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2248.                 $url $router->generate('opel_about_news_single', ['url' => $one->getUrl()]);
  2249.             }
  2250.             $result[] = [
  2251.                 'url' => $url,
  2252.                 'priority' => '0.3',
  2253.                 'changefreq' => 'monthly',
  2254.             ];
  2255.         }
  2256.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  2257.         foreach ($models as $model) {
  2258.             if ($model['url'] == '') {
  2259.                 continue;
  2260.             }
  2261.             $result[] = [
  2262.                 'url' => $router->generate('opel_service_regulations_to_model', ['model' => $model['url']]),
  2263.                 'priority' => '0.5',
  2264.                 'changefreq' => 'daily',
  2265.             ];
  2266.         }
  2267.         $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  2268.         foreach ($usedVehicles as $vehicle) {
  2269.             $result[] = [
  2270.                 'url' => $router->generate('opel_used_car_single', ['url' => $vehicle->getUrl()]),
  2271.                 'priority' => '0.8',
  2272.                 'changefreq' => 'daily',
  2273.             ];
  2274.         }
  2275.         $allActions $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer());
  2276.         foreach ($allActions as $item) {
  2277.             $result[] = [
  2278.                 'url' => $router->generate('opel_stocks_single', ['url' => $item->getUrl()]),
  2279.                 'priority' => '0.6',
  2280.                 'changefreq' => 'daily',
  2281.             ];
  2282.         }
  2283.         $pages $this->em
  2284.             ->getRepository(ModelRangePages::class)
  2285.             ->createQueryBuilder('p')
  2286.             ->where('p.dealer = :dealer')
  2287.             ->andWhere('p.active = 1')
  2288.             ->setParameter('dealer'$this->getDealer())
  2289.             ->getQuery()
  2290.             ->getResult();
  2291.         if (!empty($pages)) {
  2292.             foreach ($pages as $page) {
  2293.                 $result[] = [
  2294.                     'url' => $router->generate('opel_model_lineup_pages', ['url' => $page->getUrl()]),
  2295.                     'priority' => '0.3',
  2296.                     'changefreq' => 'monthly'
  2297.                 ];
  2298.             }
  2299.         }
  2300.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'opel_sitemap']);
  2301.         $response->headers->set('Content-Type''application/xml');
  2302.         $response->setCharset('utf-8');
  2303.         return $response;
  2304.     }
  2305.     public function haval(VehicleService $vehicleService): Response
  2306.     {
  2307.         $root $this->getParameter('kernel.project_dir');
  2308.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/haval/haval_sitemap.yml';
  2309.         $routes Yaml::parseFile($routingFile);
  2310.         $result = [];
  2311.         $router $this->router;
  2312.         foreach ($routes as $rName => $route) {
  2313.             try {
  2314.                 $url $router->generate($rName);
  2315.             } catch (Exception $e) {
  2316.                 continue;
  2317.             }
  2318.             if ($rName == 'haval_homepage') {
  2319.                 $result[] = [
  2320.                     'url' => $url,
  2321.                     'priority' => '1',
  2322.                     'changefreq' => 'always',
  2323.                 ];
  2324.             } else {
  2325.                 $result[] = [
  2326.                     'url' => $url,
  2327.                     'priority' => '0.5',
  2328.                     'changefreq' => 'daily',
  2329.                 ];
  2330.             }
  2331.         }
  2332.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  2333.         /** @var Vehicle $car */
  2334.         foreach ($cars as $car) {
  2335.             $result[] = [
  2336.                 'url' => $router->generate('haval_card_car', ['car' => $car->getUrl()]),
  2337.                 'priority' => '0.8',
  2338.                 'changefreq' => 'daily',
  2339.             ];
  2340.             $result[] = [
  2341.                 'url' => $router->generate('haval_card_car_configuraion', ['car' => $car->getUrl()]),
  2342.                 'priority' => '0.8',
  2343.                 'changefreq' => 'daily',
  2344.             ];
  2345.         }
  2346.         $post $this
  2347.             ->em
  2348.             ->getRepository(Post::class)
  2349.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2350.         /** @var Post $one */
  2351.         foreach ($post as $one) {
  2352.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2353.                 $url $router->generate('haval_about_news_single', ['url' => $one->getUrl()]);
  2354.             }
  2355.             $result[] = [
  2356.                 'url' => $url,
  2357.                 'priority' => '0.3',
  2358.                 'changefreq' => 'monthly',
  2359.             ];
  2360.         }
  2361.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  2362.         foreach ($models as $model) {
  2363.             $result[] = [
  2364.                 'url' => $router->generate('haval_service_regulations_to_model', ['model' => $model['url']]),
  2365.                 'priority' => '0.5',
  2366.                 'changefreq' => 'daily',
  2367.             ];
  2368.         }
  2369.         $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  2370.         foreach ($usedVehicles as $vehicle) {
  2371.             $result[] = [
  2372.                 'url' => $router->generate('haval_used_car_single', ['url' => $vehicle->getUrl()]),
  2373.                 'priority' => '0.8',
  2374.                 'changefreq' => 'daily',
  2375.             ];
  2376.         }
  2377.         $allActions $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer());
  2378.         foreach ($allActions as $item) {
  2379.             $result[] = [
  2380.                 'url' => $router->generate('haval_stocks_single', ['url' => $item->getUrl()]),
  2381.                 'priority' => '0.6',
  2382.                 'changefreq' => 'daily',
  2383.             ];
  2384.         }
  2385.         $pages $this->em
  2386.             ->getRepository(ModelRangePages::class)
  2387.             ->createQueryBuilder('p')
  2388.             ->where('p.dealer = :dealer')
  2389.             ->andWhere('p.active = 1')
  2390.             ->setParameter('dealer'$this->getDealer())
  2391.             ->getQuery()
  2392.             ->getResult();
  2393.         if (!empty($pages)) {
  2394.             foreach ($pages as $page) {
  2395.                 $result[] = [
  2396.                     'url' => $router->generate('haval_model_lineup_pages', ['url' => $page->getUrl()]),
  2397.                     'priority' => '0.3',
  2398.                     'changefreq' => 'monthly'
  2399.                 ];
  2400.             }
  2401.         }
  2402.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'haval_sitemap']);
  2403.         $response->headers->set('Content-Type''application/xml');
  2404.         $response->setCharset('utf-8');
  2405.         return $response;
  2406.     }
  2407.     public function marine(Catalog $catalogModel): Response
  2408.     {
  2409.         $root $this->getParameter('kernel.project_dir');
  2410.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/marine/marine_sitemap.yml';
  2411.         $routes Yaml::parseFile($routingFile);
  2412.         $result = [];
  2413.         $router $this->router;
  2414.         foreach ($routes as $rName => $route) {
  2415.             try {
  2416.                 $url $router->generate($rName);
  2417.             } catch (Exception $e) {
  2418.                 continue;
  2419.             }
  2420.             if ($rName == 'marine_homepage') {
  2421.                 $result[] = [
  2422.                     'url' => $url,
  2423.                     'priority' => '1',
  2424.                     'changefreq' => 'always',
  2425.                 ];
  2426.             } else {
  2427.                 $result[] = [
  2428.                     'url' => $url,
  2429.                     'priority' => '0.8',
  2430.                     'changefreq' => 'daily',
  2431.                 ];
  2432.             }
  2433.         }
  2434.         $vehicles $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'choven']]);
  2435.         /** @var Vehicle $vehicle */
  2436.         foreach ($vehicles as $vehicle) {
  2437.             $result[] = [
  2438.                 'url' => $router->generate('marine_catalog_boats_single', ['model' => $vehicle->getUrl()]),
  2439.                 'priority' => '0.5',
  2440.                 'changefreq' => 'daily',
  2441.             ];
  2442.         }
  2443.         $vehicles $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'chovnovy_motor']]);
  2444.         /** @var Vehicle $vehicle */
  2445.         foreach ($vehicles as $vehicle) {
  2446.             $result[] = [
  2447.                 'url' => $router->generate('marine_catalog_jetskis_single', ['model' => $vehicle->getUrl()]),
  2448.                 'priority' => '0.5',
  2449.                 'changefreq' => 'daily',
  2450.             ];
  2451.         }
  2452.         $vehicles $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'gidrocikl']]);
  2453.         /** @var Vehicle $vehicle */
  2454.         foreach ($vehicles as $vehicle) {
  2455.             $result[] = [
  2456.                 'url' => $router->generate('marine_catalog_motors_single', ['model' => $vehicle->getUrl()]),
  2457.                 'priority' => '0.5',
  2458.                 'changefreq' => 'daily',
  2459.             ];
  2460.         }
  2461.         $post $this
  2462.             ->em
  2463.             ->getRepository(Post::class)
  2464.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2465.         /** @var Post $one */
  2466.         foreach ($post as $one) {
  2467.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2468.                 $url $router->generate('marine_news_single', ['url' => $one->getUrl()]);
  2469.             }
  2470.             $result[] = [
  2471.                 'url' => $url,
  2472.                 'priority' => '0.3',
  2473.                 'changefreq' => 'monthly',
  2474.             ];
  2475.         }
  2476.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'marine_sitemap']);
  2477.         $response->headers->set('Content-Type''application/xml');
  2478.         $response->setCharset('utf-8');
  2479.         return $response;
  2480.     }
  2481.     public function shopAccessorySiteMap(Request $request): Response
  2482.     {
  2483.         $router $this->router;
  2484.         $result = [];
  2485.         $result[] = [
  2486.             'url' => $router->generate('shop_accessory_catalog'),
  2487.             'priority' => '1',
  2488.             'changefreq' => 'daily',
  2489.         ];
  2490.         $serviceWorkAccessory $this->em->getRepository(ServiceWorkGroup::class)->getGroupsWhereDealerIsNullAndNotServices();
  2491.         /** @var ServiceWorkGroup $item */
  2492.         foreach ($serviceWorkAccessory as $item) {
  2493.             if ($item->getUrl() != null) {
  2494.                 $result[] = [
  2495.                     'url' => $router->generate('shop_accessory_category', ['categoryUrl' => $item->getUrl()]),
  2496.                     'priority' => '0.8',
  2497.                     'changefreq' => 'daily',
  2498.                 ];
  2499.             }
  2500.         }
  2501.         $serviceWorkGroupModel $this->em->getRepository(ServiceWorkGroup::class)->getGroupsByDealer($this->getDealer());
  2502.         foreach ($serviceWorkGroupModel as $item) {
  2503.             $result[] = [
  2504.                 'url' => $router->generate('shop_accessory_category_model', ['categoryUrl' => $item['groupUrl'], 'modelUrl' => $item['modelUrl']]),
  2505.                 'priority' => '0.8',
  2506.                 'changefreq' => 'daily',
  2507.             ];
  2508.         }
  2509.         $serviceWorkAccessory $this->em->getRepository(ServiceWork::class)->findBy(['dealer' => $this->getDealer(), 'is_accessory' => true]);
  2510.         /** @var ServiceWork $item */
  2511.         foreach ($serviceWorkAccessory as $item) {
  2512.             $result[] = [
  2513.                 'url' => $router->generate('shop_accessory_page', ['workId' => $item->getId()]),
  2514.                 'priority' => '0.6',
  2515.                 'changefreq' => 'daily',
  2516.             ];
  2517.         }
  2518.         $response $this->render('@DcSite/sitemap.xml.twig', [
  2519.             'urls' => $result,
  2520.             'route' => $request->get('_route')
  2521.         ]);
  2522.         $response->headers->set('Content-Type''application/xml');
  2523.         $response->setCharset('utf-8');
  2524.         return $response;
  2525.     }
  2526.     public function shopImagesSiteMap(Request $requestAccessoryShopService $accessoryShopServiceImageProviderVidi $imageProviderVidi): Response
  2527.     {
  2528.         $result = [];
  2529.         $accessories $accessoryShopService->getAccessoryByDealer($this->getDealer());
  2530.         foreach ($accessories as $accessory) {
  2531.             if (!$accessory['gallery']) {
  2532.                 continue;
  2533.             }
  2534.             if (count($accessory['gallery']->getGalleryItems()) == 0) {
  2535.                 continue;
  2536.             }
  2537.             $mediaPaths = [];
  2538.             $galleryItems $accessory['gallery']->getGalleryItems();
  2539.             foreach ($galleryItems as $galleryItem) {
  2540.                 $mediaPaths[] = $request->getHost() . '/uploads/media/' $imageProviderVidi->generatePath($galleryItem->getMedia()) .
  2541.                     '/' $galleryItem->getMedia()->getProviderReference();
  2542.             }
  2543.             $result[] = [
  2544.                 'accessoryUrl' => $request->getHost() . '/product/' $accessory['id'] . '.html',
  2545.                 'mediaPath' => $mediaPaths
  2546.             ];
  2547.         }
  2548.         $response $this->render(
  2549.             '@DcSite/sitemap-images.xml.twig',
  2550.             ['result' => $result]
  2551.         );
  2552.         $response->headers->set('Content-Type''application/xml');
  2553.         $response->setCharset('utf-8');
  2554.         return $response;
  2555.     }
  2556. }