src/DcSiteBundle/Controller/SiteMapController.php line 1332

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.             if ($rName == 'lexus_configurator_action') {
  1508.                 $result[] = [
  1509.                     'url' => $router->generate('lexus_card_car', ['url' => 'start']),
  1510.                     'priority' => '0.5',
  1511.                     'changefreq' => 'daily',
  1512.                 ];
  1513.             }
  1514.             try {
  1515.                 $url $router->generate($rName);
  1516.             } catch (Exception $e) {
  1517.                 continue;
  1518.             }
  1519.             $result[] = [
  1520.                 'url' => $url,
  1521.                 'priority' => $priority,
  1522.                 'changefreq' => $changefreq,
  1523.             ];
  1524.         }
  1525.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1526.         /** @var Vehicle $car */
  1527.         foreach ($cars as $car) {
  1528.             $result[] = [
  1529.                 'url' => $router->generate('lexus_configurator_action', ['url' => $car->getUrl()]),
  1530.                 'priority' => '0.8',
  1531.                 'changefreq' => 'daily',
  1532.             ];
  1533.             $result[] = [
  1534.                 'url' => $router->generate('lexus_card_car', ['url' => $car->getUrl()]),
  1535.                 'priority' => '0.8',
  1536.                 'changefreq' => 'daily',
  1537.             ];
  1538.             $result[] = [
  1539.                 'url' => $router->generate('lexus_card_car_configuraion', ['url' => $car->getUrl()]),
  1540.                 'priority' => '0.8',
  1541.                 'changefreq' => 'daily',
  1542.             ];
  1543.         }
  1544.         foreach ($cars as $car) {
  1545.             $categories[] = $car->getCategory()->getUrl();
  1546.         }
  1547.         foreach (array_unique($categories) as $category) {
  1548.             $result[] = [
  1549.                 'url' => $router->generate('lexus_car_catalog_category', ['url' => $category]),
  1550.                 'priority' => '0.5',
  1551.                 'changefreq' => 'daily',
  1552.             ];
  1553.         }
  1554.         $group $pagesService->setLang($request->getLocale())->getPages($this->getDealer());
  1555.         foreach ($group as $item) {
  1556.             $result[] = [
  1557.                 'url' => $router->generate('lexus_car_catalog_pages', ['url' => $item['url']]),
  1558.                 'priority' => '0.5',
  1559.                 'changefreq' => 'daily',
  1560.             ];
  1561.         }
  1562.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  1563.         foreach ($inStock as $car) {
  1564.             $result[] = [
  1565.                 'url' => $router->generate('lexus_car_stock_single', ['url' => $car->getUrl()]),
  1566.                 'priority' => '0.5',
  1567.                 'changefreq' => 'daily',
  1568.             ];
  1569.         }
  1570.         $usedCars $this->vehicleRepository->getUsed($this->getDealer(), true);
  1571.         /** @var Vehicle $car */
  1572.         foreach ($usedCars as $car) {
  1573.             $result[] = [
  1574.                 'url' => $router->generate('lexus_used_car_single', ['url' => $car->getUrl()]),
  1575.                 'priority' => '0.5',
  1576.                 'changefreq' => 'daily',
  1577.             ];
  1578.         }
  1579.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1580.         /** @var Post $one */
  1581.         foreach ($post as $one) {
  1582.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1583.                 $url $router->generate('lexus_about_us_news_single', ['url' => $one->getUrl()]);
  1584.             } else {
  1585.                 $url $router->generate('lexus_stocks_single', ['url' => $one->getUrl()]);
  1586.             }
  1587.             $result[] = [
  1588.                 'url' => $url,
  1589.                 'priority' => '0.3',
  1590.                 'changefreq' => 'monthly',
  1591.             ];
  1592.         }
  1593.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1594.         foreach ($models as $model) {
  1595.             if ($model['url'] == '') {
  1596.                 continue;
  1597.             }
  1598.             $result[] = [
  1599.                 'url' => $router->generate('lexus_service_price_for_car_model', ['model' => $model['url']]),
  1600.                 'priority' => '0.5',
  1601.                 'changefreq' => 'daily',
  1602.             ];
  1603.         }
  1604.         $response $this->render(
  1605.             '@DcSite/sitemap.xml.twig',
  1606.             ['urls' => $result'route' => 'toyota_odessa_sitemap']
  1607.         );
  1608.         $response->headers->set('Content-Type''application/xml');
  1609.         $response->setCharset('utf-8');
  1610.         return $response;
  1611.     }
  1612.     public function toyota(Request $requestInStockRepository $inStockRepositoryModelServicePageService $servicePageService): Response
  1613.     {
  1614.         $root $this->getParameter('kernel.project_dir');
  1615.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/toyota/toyota_sitemap.yml';
  1616.         $routes Yaml::parseFile($routingFile);
  1617.         $result = [];
  1618.         $router $this->router;
  1619.         foreach ($routes as $rName => $route) {
  1620.             try {
  1621.                 $url $router->generate($rName);
  1622.             } catch (Exception $e) {
  1623.                 continue;
  1624.             }
  1625.             if ($rName == 'toyota_about_mytoyota' || $rName == 'toyota_configurator_action' || $rName == 'toyota_accessories') {
  1626.                 continue;
  1627.             }
  1628.             if ($rName == 'toyota_homepage') {
  1629.                 $result[] = [
  1630.                     'url' => $url,
  1631.                     'priority' => '1',
  1632.                     'changefreq' => 'always',
  1633.                 ];
  1634.             } else {
  1635.                 $result[] = [
  1636.                     'url' => $url,
  1637.                     'priority' => '0.5',
  1638.                     'changefreq' => 'daily',
  1639.                 ];
  1640.             }
  1641.         }
  1642.         $models Toyota\CarController::MODEL_FRAME;
  1643.         foreach ($models as $model) {
  1644.             $result[] = [
  1645.                 'url' => $router->generate('toyota_secondhand_model', ['model' => $model]),
  1646.                 'priority' => '0.5',
  1647.                 'changefreq' => 'daily',
  1648.             ];
  1649.         }
  1650.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  1651.         /** @var InStock $vehicle */
  1652.         foreach ($inStock as $vehicle) {
  1653.             $result[] = [
  1654.                 'url' => $router->generate('toyota_in_stock_car', ['url' => $vehicle->getUrl()]),
  1655.                 'priority' => '0.8',
  1656.                 'changefreq' => 'monthly',
  1657.             ];
  1658.         }
  1659.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1660.         /** @var Vehicle $car */
  1661.         foreach ($cars as $car) {
  1662.             if ($car->getIsUsed()) {
  1663.                 continue;
  1664.             } else {
  1665.                 $result[] = [
  1666.                     'url' => $router->generate('toyota_one_car', ['car' => $car->getUrl()]),
  1667.                     'priority' => '0.8',
  1668.                     'changefreq' => 'daily',
  1669.                 ];
  1670.                 $result[] = [
  1671.                     'url' => $router->generate('toyota_card_car_configuraion', ['car' => $car->getUrl()]),
  1672.                     'priority' => '0.5',
  1673.                     'changefreq' => 'daily',
  1674.                 ];
  1675.             }
  1676.         }
  1677.         $services $servicePageService->getServiceByDealer($this->getDealer());
  1678.         foreach ($services as $service) {
  1679.             foreach ($service['pages'] as $page) {
  1680.                 $result[] = [
  1681.                     'url' => $router->generate('toyota_service_page', ['url' => $page->getUrl()]),
  1682.                     'priority' => '0.5',
  1683.                     'changefreq' => 'daily',
  1684.                 ];
  1685.             }
  1686.         }
  1687.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1688.         /** @var Post $one */
  1689.         foreach ($post as $one) {
  1690.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1691.                 $url $router->generate('toyota_about_news_single', ['url' => $one->getUrl()]);
  1692.             } else {
  1693.                 $url $router->generate('toyota_action_single', ['url' => $one->getUrl()]);
  1694.             }
  1695.             $result[] = [
  1696.                 'url' => $url,
  1697.                 'priority' => '0.3',
  1698.                 'changefreq' => 'monthly',
  1699.             ];
  1700.         }
  1701.         $brandId $this->getDealer()->getBrand()->getId();
  1702.         $variations $this->em
  1703.             ->getRepository(ServiceVariation::class)
  1704.             ->getRegulationVariations($this->getDealer(), $brandId);
  1705.         $uniqueModel = [];
  1706.         foreach ($variations as $variation) {
  1707.             $model $variation->getModel();
  1708.             if ($model->getUrl() == '') {
  1709.                 continue;
  1710.             }
  1711.             if (!in_array($model->getUrl(), $uniqueModel)) {
  1712.                 $result[] = [
  1713.                     'url' => $router->generate('toyota_service_regulations_to_model', ['model' => $model->getUrl()]),
  1714.                     'priority' => '0.3',
  1715.                     'changefreq' => 'monthly',
  1716.                 ];
  1717.                 $uniqueModel[] = $model->getUrl();
  1718.             }
  1719.         }
  1720.         $carList $this->getModelMenuItems($request->getLocale(), 'small');
  1721.         foreach ($carList as $category) {
  1722.             $result[] = [
  1723.                 'url' => $router->generate('toyota_car_catalog_category', ['category' => $category['url']]),
  1724.                 'priority' => '0.3',
  1725.                 'changefreq' => 'monthly',
  1726.             ];
  1727.         }
  1728.         $pages $this->em
  1729.             ->getRepository(ModelRangePages::class)
  1730.             ->createQueryBuilder('p')
  1731.             ->where('p.dealer = :dealer')
  1732.             ->andWhere('p.active = 1')
  1733.             ->setParameter('dealer'$this->getDealer())
  1734.             ->getQuery()
  1735.             ->getResult();
  1736.         if (!empty($pages)) {
  1737.             foreach ($pages as $page) {
  1738.                 $result[] = [
  1739.                     'url' => $router->generate('toyota_car_catalog_pages', ['url' => $page->getUrl()]),
  1740.                     'priority' => '0.3',
  1741.                     'changefreq' => 'monthly'
  1742.                 ];
  1743.             }
  1744.         }
  1745.         $response $this->render(
  1746.             '@DcSite/sitemap.xml.twig',
  1747.             ['urls' => $result'route' => 'toyota_odessa_sitemap']
  1748.         );
  1749.         $response->headers->set('Content-Type''application/xml');
  1750.         $response->setCharset('utf-8');
  1751.         return $response;
  1752.     }
  1753.     public function toyotaBorispol(Request $requestServicePageService $servicePageService): Response
  1754.     {
  1755.         $root $this->getParameter('kernel.project_dir');
  1756.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/toyota_borispol/toyota_borispol_sitemap.yml';
  1757.         $routes Yaml::parseFile($routingFile);
  1758.         $result = [];
  1759.         $router $this->router;
  1760.         foreach ($routes as $rName => $route) {
  1761.             try {
  1762.                 $url $router->generate($rName);
  1763.             } catch (Exception $e) {
  1764.                 continue;
  1765.             }
  1766.             if ($rName == 'toyota_borispol_service_page' ||
  1767.                 $rName == 'toyota_borispol_used_car_model' ||
  1768.                 $rName == 'toyota_borispol_service_regulations_to_model' ||
  1769.                 $rName == 'toyota_borispol_service_replacement_car_form' ||
  1770.                 $rName == 'toyota_borispol_basket' ||
  1771.                 $rName == 'toyota_borispol_service_order_rent_cars' ||
  1772.                 $rName == 'toyota_borispol_actions_single') {
  1773.                 continue;
  1774.             } else {
  1775.                 $result[] = [
  1776.                     'url' => $url,
  1777.                     'priority' => '0.5',
  1778.                     'changefreq' => 'daily',
  1779.                 ];
  1780.             }
  1781.             if ($rName == 'toyota_borispol_homepage') {
  1782.                 $result[] = [
  1783.                     'url' => $url,
  1784.                     'priority' => '1',
  1785.                     'changefreq' => 'always',
  1786.                 ];
  1787.             }
  1788.         }
  1789.         $models CarController::MODEL_FRAME;
  1790.         foreach ($models as $model) {
  1791.             $result[] = [
  1792.                 'url' => $router->generate('toyota_borispol_used_car_model', ['model' => $model]),
  1793.                 'priority' => '0.5',
  1794.                 'changefreq' => 'daily',
  1795.             ];
  1796.         }
  1797.         $serviceRegulationExclusion = [
  1798.             'yaris-hybrid',
  1799.             'yaris-cross-hybrid',
  1800.             'corolla-hybrid',
  1801.             'camry-hybrid',
  1802.             'c-hr-hybrid',
  1803.             'highlander-hybrid',
  1804.             'rav4-hybrid',
  1805.             'yaris-cross-hybrid',
  1806.             'yaris-hybrid',
  1807.             'camry-hybrid',
  1808.             'corolla-hybrid',
  1809.             'c-hr-hybrid',
  1810.             'rav4-hybrid',
  1811.             'highlander-hybrid',
  1812.         ];
  1813.         foreach ($models as $model) {
  1814.             if (!in_array($model$serviceRegulationExclusion)) {
  1815.                 $result[] = [
  1816.                     'url' => $router->generate('toyota_borispol_service_regulations_to_model', ['model' => $model]),
  1817.                     'priority' => '0.5',
  1818.                     'changefreq' => 'daily',
  1819.                 ];
  1820.             }
  1821.         }
  1822.         $posts_car $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer(), PostModel::ACTION_TYPE_CAR);
  1823.         $posts_service $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer(), PostModel::ACTION_TYPE_SERVICE);
  1824.         $posts array_merge($posts_car$posts_service);
  1825.         foreach ($posts as $post) {
  1826.             $result[] = [
  1827.                 'url' => $router->generate('toyota_borispol_actions_single', ['url' => $post->getUrl()]),
  1828.                 'priority' => '0.5',
  1829.                 'changefreq' => 'daily',
  1830.             ];
  1831.         }
  1832.         $services $servicePageService->getServiceByDealer($this->getDealer());
  1833.         foreach ($services as $service) {
  1834.             foreach ($service['pages'] as $page) {
  1835.                 $result[] = [
  1836.                     'url' => $router->generate('toyota_borispol_service_page', ['url' => $page->getUrl()]),
  1837.                     'priority' => '0.5',
  1838.                     'changefreq' => 'daily',
  1839.                 ];
  1840.             }
  1841.         }
  1842.         $posts $this->em->getRepository(Post::class)->getNewsByDealer($this->getDealer());
  1843.         /** @var Post $post */
  1844.         foreach ($posts as $post) {
  1845.             if ($post->getPostType() == PostModel::POST_TYPE_NEWS) {
  1846.                 $url $router->generate('toyota_borispol_news_single', ['url' => $post->getUrl()]);
  1847.             } else {
  1848.                 $url $router->generate('toyota_borispol_actions_single', ['url' => $post->getUrl()]);
  1849.             }
  1850.             $result[] = [
  1851.                 'url' => $url,
  1852.                 'priority' => '0.3',
  1853.                 'changefreq' => 'monthly',
  1854.             ];
  1855.         }
  1856.         $response $this->render('@DcSite/sitemap.xml.twig', [
  1857.             'urls' => $result,
  1858.             'route' => 'toyota_odessa_sitemap'
  1859.         ]);
  1860.         $response->headers->set('Content-Type''application/xml');
  1861.         $response->setCharset('utf-8');
  1862.         return $response;
  1863.     }
  1864.     public function unicommerce(Request $request): Response
  1865.     {
  1866.         $root $this->getParameter('kernel.project_dir');
  1867.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/unicommerce/unicommerce_sitemap.yml';
  1868.         $routes Yaml::parseFile($routingFile);
  1869.         $result = [];
  1870.         $router $this->router;
  1871.         foreach ($routes as $rName => $route) {
  1872.             try {
  1873.                 $url $router->generate($rName);
  1874.             } catch (Exception $e) {
  1875.                 continue;
  1876.             }
  1877.             if ($rName == 'unicommerce_homepage') {
  1878.                 $result[] = [
  1879.                     'url' => $url,
  1880.                     'priority' => '1',
  1881.                     'changefreq' => 'always',
  1882.                 ];
  1883.             } else {
  1884.                 $result[] = [
  1885.                     'url' => $url,
  1886.                     'priority' => '0.5',
  1887.                     'changefreq' => 'daily',
  1888.                 ];
  1889.             }
  1890.         }
  1891.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1892.         foreach ($cars as $car) {
  1893.             $result[] = [
  1894.                 'url' => $router->generate('unicommerce_car_single_without_group',
  1895.                     ['vehicleUrl' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]),
  1896.                 'priority' => '0.5',
  1897.                 'changefreq' => 'daily',
  1898.             ];
  1899.         }
  1900.         $vehicleCategories $this->em->getRepository(Category::class)->findBy(['vehicle_type' => 6]);
  1901.         foreach ($vehicleCategories as $category) {
  1902.             $result[] = [
  1903.                 'url' => $router->generate('unicommerce_car_catalog', ['category' => $category->getUrl()]),
  1904.                 'priority' => '0.5',
  1905.                 'changefreq' => 'daily',
  1906.             ];
  1907.         }
  1908.         $response $this->render('@DcSite/sitemap.xml.twig', [
  1909.             'urls' => $result,
  1910.             'route' => 'unicommerce_sitemap'
  1911.         ]);
  1912.         $response->headers->set('Content-Type''application/xml');
  1913.         $response->setCharset('utf-8');
  1914.         return $response;
  1915.     }
  1916.     public function citroen(InStockRepository $inStockRepositoryModelVehicleService $vehicleService): Response
  1917.     {
  1918.         $root $this->getParameter('kernel.project_dir');
  1919.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/citroen/citroen_sitemap.yml';
  1920.         $routes Yaml::parseFile($routingFile);
  1921.         $result = [];
  1922.         $router $this->router;
  1923.         foreach ($routes as $rName => $route) {
  1924.             try {
  1925.                 $url $router->generate($rName);
  1926.             } catch (Exception $e) {
  1927.                 continue;
  1928.             }
  1929.             if ($rName == 'citroen_homepage') {
  1930.                 $result[] = [
  1931.                     'url' => $url,
  1932.                     'priority' => '1',
  1933.                     'changefreq' => 'always',
  1934.                 ];
  1935.             } else {
  1936.                 $result[] = [
  1937.                     'url' => $url,
  1938.                     'priority' => '0.5',
  1939.                     'changefreq' => 'daily',
  1940.                 ];
  1941.             }
  1942.         }
  1943.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  1944.         /** @var Vehicle $car */
  1945.         foreach ($cars as $car) {
  1946.             $result[] = [
  1947.                 'url' => $router->generate('citroen_card_car', ['car' => $car->getUrl()]),
  1948.                 'priority' => '0.8',
  1949.                 'changefreq' => 'daily',
  1950.             ];
  1951.             $result[] = [
  1952.                 'url' => $router->generate('citroen_card_car_configuraion', ['car' => $car->getUrl()]),
  1953.                 'priority' => '0.8',
  1954.                 'changefreq' => 'daily',
  1955.             ];
  1956.         }
  1957.         $inStock $inStockRepositoryModel->getByDealer($this->getDealer());
  1958.         /** @var InStock $vehicle */
  1959.         foreach ($inStock as $vehicle) {
  1960.             $result[] = [
  1961.                 'url' => $router->generate('citroen_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
  1962.                 'priority' => '0.3',
  1963.                 'changefreq' => 'monthly',
  1964.             ];
  1965.         }
  1966.         $post $this->em
  1967.             ->getRepository(Post::class)
  1968.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  1969.         /** @var Post $one */
  1970.         foreach ($post as $one) {
  1971.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  1972.                 $url $router->generate('citroen_about_news_single', ['url' => $one->getUrl()]);
  1973.             } else {
  1974.                 $url $router->generate('citroen_stocks_single', ['url' => $one->getUrl()]);
  1975.             }
  1976.             $result[] = [
  1977.                 'url' => $url,
  1978.                 'priority' => '0.3',
  1979.                 'changefreq' => 'monthly',
  1980.             ];
  1981.         }
  1982.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  1983.         foreach ($models as $model) {
  1984.             $result[] = [
  1985.                 'url' => $router->generate('citroen_service_regulations_to_model', ['model' => $model['url']]),
  1986.                 'priority' => '0.5',
  1987.                 'changefreq' => 'daily',
  1988.             ];
  1989.         }
  1990.         $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  1991.         foreach ($usedVehicles as $vehicle) {
  1992.             $result[] = [
  1993.                 'url' => $router->generate('citroen_used_car_single', ['url' => $vehicle->getUrl()]),
  1994.                 'priority' => '0.8',
  1995.                 'changefreq' => 'daily',
  1996.             ];
  1997.         }
  1998.         $pages $this->em
  1999.             ->getRepository(ModelRangePages::class)
  2000.             ->createQueryBuilder('p')
  2001.             ->where('p.dealer = :dealer')
  2002.             ->andWhere('p.active = 1')
  2003.             ->setParameter('dealer'$this->getDealer())
  2004.             ->getQuery()
  2005.             ->getResult();
  2006.         if (!empty($pages)) {
  2007.             foreach ($pages as $page) {
  2008.                 $result[] = [
  2009.                     'url' => $router->generate('citroen_model_range_pages', ['url' => $page->getUrl()]),
  2010.                     'priority' => '0.3',
  2011.                     'changefreq' => 'monthly'
  2012.                 ];
  2013.             }
  2014.         }
  2015.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'honda_sitemap']);
  2016.         $response->headers->set('Content-Type''application/xml');
  2017.         $response->setCharset('utf-8');
  2018.         return $response;
  2019.     }
  2020.     public function honda(VehicleService $vehicleService): Response
  2021.     {
  2022.         $root $this->getParameter('kernel.project_dir');
  2023.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/honda/honda_sitemap.yml';
  2024.         $routes Yaml::parseFile($routingFile);
  2025.         $result = [];
  2026.         $router $this->router;
  2027.         foreach ($routes as $rName => $route) {
  2028.             try {
  2029.                 $url $router->generate($rName);
  2030.             } catch (Exception $e) {
  2031.                 continue;
  2032.             }
  2033.             if ($rName == 'honda_homepage') {
  2034.                 $result[] = [
  2035.                     'url' => $url,
  2036.                     'priority' => '1',
  2037.                     'changefreq' => 'always',
  2038.                 ];
  2039.             } else {
  2040.                 $result[] = [
  2041.                     'url' => $url,
  2042.                     'priority' => '0.5',
  2043.                     'changefreq' => 'daily',
  2044.                 ];
  2045.             }
  2046.         }
  2047.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  2048.         /** @var Vehicle $car */
  2049.         foreach ($cars as $car) {
  2050.             $result[] = [
  2051.                 'url' => $router->generate('honda_card_car', ['car' => $car->getUrl()]),
  2052.                 'priority' => '0.8',
  2053.                 'changefreq' => 'daily',
  2054.             ];
  2055.             $result[] = [
  2056.                 'url' => $router->generate('honda_card_car_configuraion', ['car' => $car->getUrl()]),
  2057.                 'priority' => '0.8',
  2058.                 'changefreq' => 'daily',
  2059.             ];
  2060.         }
  2061.         $post $this->em
  2062.             ->getRepository(Post::class)
  2063.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2064.         /** @var Post $one */
  2065.         foreach ($post as $one) {
  2066.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2067.                 $url $router->generate('honda_news_single', ['url' => $one->getUrl()]);
  2068.             } else {
  2069.                 $url $router->generate('honda_stocks_single', ['url' => $one->getUrl()]);
  2070.             }
  2071.             $result[] = [
  2072.                 'url' => $url,
  2073.                 'priority' => '0.3',
  2074.                 'changefreq' => 'monthly',
  2075.             ];
  2076.         }
  2077.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  2078.         foreach ($models as $model) {
  2079.             if ($model['url'] == '') {
  2080.                 continue;
  2081.             }
  2082.             $result[] = [
  2083.                 'url' => $router->generate('honda_service_honda_regulations_to_model', ['model' => $model['url']]),
  2084.                 'priority' => '0.5',
  2085.                 'changefreq' => 'daily',
  2086.             ];
  2087.         }
  2088.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer(), 32);
  2089.         foreach ($models as $model) {
  2090.             $result[] = [
  2091.                 'url' => $router->generate('honda_service_acura_regulations_to_model', ['model' => $model['url']]),
  2092.                 'priority' => '0.5',
  2093.                 'changefreq' => 'daily',
  2094.             ];
  2095.         }
  2096.         $pages $this->em
  2097.             ->getRepository(ModelRangePages::class)
  2098.             ->createQueryBuilder('p')
  2099.             ->where('p.dealer = :dealer')
  2100.             ->andWhere('p.active = 1')
  2101.             ->setParameter('dealer'$this->getDealer())
  2102.             ->getQuery()
  2103.             ->getResult();
  2104.         if (!empty($pages)) {
  2105.             foreach ($pages as $page) {
  2106.                 $result[] = [
  2107.                     'url' => $router->generate('honda_model_lineup_pages', ['url' => $page->getUrl()]),
  2108.                     'priority' => '0.3',
  2109.                     'changefreq' => 'monthly'
  2110.                 ];
  2111.             }
  2112.         }
  2113.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'honda_sitemap']);
  2114.         $response->headers->set('Content-Type''application/xml');
  2115.         $response->setCharset('utf-8');
  2116.         return $response;
  2117.     }
  2118.     public function mg(VehicleService $vehicleService): Response
  2119.     {
  2120.         $root $this->getParameter('kernel.project_dir');
  2121.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/morris_garage/morris_garage_sitemap.yml';
  2122.         $routes Yaml::parseFile($routingFile);
  2123.         $result = [];
  2124.         $router $this->router;
  2125.         foreach ($routes as $rName => $route) {
  2126.             try {
  2127.                 $url $router->generate($rName);
  2128.             } catch (Exception $e) {
  2129.                 continue;
  2130.             }
  2131.             if ($rName == 'mg_homepage') {
  2132.                 $result[] = [
  2133.                     'url' => $url,
  2134.                     'priority' => '1',
  2135.                     'changefreq' => 'always',
  2136.                 ];
  2137.             } else {
  2138.                 $result[] = [
  2139.                     'url' => $url,
  2140.                     'priority' => '0.5',
  2141.                     'changefreq' => 'daily',
  2142.                 ];
  2143.             }
  2144.         }
  2145.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  2146.         /** @var Vehicle $car */
  2147.         foreach ($cars as $car) {
  2148.             $result[] = [
  2149.                 'url' => $router->generate('mg_card_car', ['car' => $car->getUrl()]),
  2150.                 'priority' => '0.8',
  2151.                 'changefreq' => 'daily',
  2152.             ];
  2153.             $result[] = [
  2154.                 'url' => $router->generate('mg_card_car_configuraion', ['car' => $car->getUrl()]),
  2155.                 'priority' => '0.8',
  2156.                 'changefreq' => 'daily',
  2157.             ];
  2158.         }
  2159.         $post $this->em
  2160.             ->getRepository(Post::class)
  2161.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2162.         /** @var Post $one */
  2163.         foreach ($post as $one) {
  2164.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2165.                 $url $router->generate('mg_about_news_single', ['url' => $one->getUrl()]);
  2166.             }
  2167.             $result[] = [
  2168.                 'url' => $url,
  2169.                 'priority' => '0.3',
  2170.                 'changefreq' => 'monthly',
  2171.             ];
  2172.         }
  2173.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  2174.         foreach ($models as $model) {
  2175.             if ($model['url'] == '') {
  2176.                 continue;
  2177.             }
  2178.             $result[] = [
  2179.                 'url' => $router->generate('mg_service_regulations_to_model', ['model' => $model['url']]),
  2180.                 'priority' => '0.5',
  2181.                 'changefreq' => 'daily',
  2182.             ];
  2183.         }
  2184.         $pages $this->em
  2185.             ->getRepository(ModelRangePages::class)
  2186.             ->createQueryBuilder('p')
  2187.             ->where('p.dealer = :dealer')
  2188.             ->andWhere('p.active = 1')
  2189.             ->setParameter('dealer'$this->getDealer())
  2190.             ->getQuery()
  2191.             ->getResult();
  2192.         if (!empty($pages)) {
  2193.             foreach ($pages as $page) {
  2194.                 $result[] = [
  2195.                     'url' => $router->generate('mg_model_lineup_pages', ['url' => $page->getUrl()]),
  2196.                     'priority' => '0.3',
  2197.                     'changefreq' => 'monthly'
  2198.                 ];
  2199.             }
  2200.         }
  2201.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'mg_sitemap']);
  2202.         $response->headers->set('Content-Type''application/xml');
  2203.         $response->setCharset('utf-8');
  2204.         return $response;
  2205.     }
  2206.     public function opel(VehicleService $vehicleService): Response
  2207.     {
  2208.         $root $this->getParameter('kernel.project_dir');
  2209.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/opel/opel_sitemap.yml';
  2210.         $routes Yaml::parseFile($routingFile);
  2211.         $result = [];
  2212.         $router $this->router;
  2213.         foreach ($routes as $rName => $route) {
  2214.             try {
  2215.                 $url $router->generate($rName);
  2216.             } catch (Exception $e) {
  2217.                 continue;
  2218.             }
  2219.             if ($rName == 'opel_about_quality_policy' || 'opel_public_offer') {
  2220.                 continue;
  2221.             }
  2222.             if ($rName == 'opel_homepage') {
  2223.                 $result[] = [
  2224.                     'url' => $url,
  2225.                     'priority' => '1',
  2226.                     'changefreq' => 'always',
  2227.                 ];
  2228.             } else {
  2229.                 $result[] = [
  2230.                     'url' => $url,
  2231.                     'priority' => '0.5',
  2232.                     'changefreq' => 'daily',
  2233.                 ];
  2234.             }
  2235.         }
  2236.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  2237.         /** @var Vehicle $car */
  2238.         foreach ($cars as $car) {
  2239.             $result[] = [
  2240.                 'url' => $router->generate('opel_card_car', ['car' => $car->getUrl()]),
  2241.                 'priority' => '0.8',
  2242.                 'changefreq' => 'daily',
  2243.             ];
  2244.             $result[] = [
  2245.                 'url' => $router->generate('opel_card_car_configuraion', ['car' => $car->getUrl()]),
  2246.                 'priority' => '0.8',
  2247.                 'changefreq' => 'daily',
  2248.             ];
  2249.         }
  2250.         $post $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2251.         /** @var Post $one */
  2252.         foreach ($post as $one) {
  2253.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2254.                 $url $router->generate('opel_about_news_single', ['url' => $one->getUrl()]);
  2255.             }
  2256.             $result[] = [
  2257.                 'url' => $url,
  2258.                 'priority' => '0.3',
  2259.                 'changefreq' => 'monthly',
  2260.             ];
  2261.         }
  2262.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  2263.         foreach ($models as $model) {
  2264.             if ($model['url'] == '') {
  2265.                 continue;
  2266.             }
  2267.             $result[] = [
  2268.                 'url' => $router->generate('opel_service_regulations_to_model', ['model' => $model['url']]),
  2269.                 'priority' => '0.5',
  2270.                 'changefreq' => 'daily',
  2271.             ];
  2272.         }
  2273.         $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  2274.         foreach ($usedVehicles as $vehicle) {
  2275.             $result[] = [
  2276.                 'url' => $router->generate('opel_used_car_single', ['url' => $vehicle->getUrl()]),
  2277.                 'priority' => '0.8',
  2278.                 'changefreq' => 'daily',
  2279.             ];
  2280.         }
  2281.         $allActions $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer());
  2282.         foreach ($allActions as $item) {
  2283.             $result[] = [
  2284.                 'url' => $router->generate('opel_stocks_single', ['url' => $item->getUrl()]),
  2285.                 'priority' => '0.6',
  2286.                 'changefreq' => 'daily',
  2287.             ];
  2288.         }
  2289.         $pages $this->em
  2290.             ->getRepository(ModelRangePages::class)
  2291.             ->createQueryBuilder('p')
  2292.             ->where('p.dealer = :dealer')
  2293.             ->andWhere('p.active = 1')
  2294.             ->setParameter('dealer'$this->getDealer())
  2295.             ->getQuery()
  2296.             ->getResult();
  2297.         if (!empty($pages)) {
  2298.             foreach ($pages as $page) {
  2299.                 $result[] = [
  2300.                     'url' => $router->generate('opel_model_lineup_pages', ['url' => $page->getUrl()]),
  2301.                     'priority' => '0.3',
  2302.                     'changefreq' => 'monthly'
  2303.                 ];
  2304.             }
  2305.         }
  2306.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'opel_sitemap']);
  2307.         $response->headers->set('Content-Type''application/xml');
  2308.         $response->setCharset('utf-8');
  2309.         return $response;
  2310.     }
  2311.     public function haval(VehicleService $vehicleService): Response
  2312.     {
  2313.         $root $this->getParameter('kernel.project_dir');
  2314.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/haval/haval_sitemap.yml';
  2315.         $routes Yaml::parseFile($routingFile);
  2316.         $result = [];
  2317.         $router $this->router;
  2318.         foreach ($routes as $rName => $route) {
  2319.             try {
  2320.                 $url $router->generate($rName);
  2321.             } catch (Exception $e) {
  2322.                 continue;
  2323.             }
  2324.             if ($rName == 'haval_homepage') {
  2325.                 $result[] = [
  2326.                     'url' => $url,
  2327.                     'priority' => '1',
  2328.                     'changefreq' => 'always',
  2329.                 ];
  2330.             } else {
  2331.                 $result[] = [
  2332.                     'url' => $url,
  2333.                     'priority' => '0.5',
  2334.                     'changefreq' => 'daily',
  2335.                 ];
  2336.             }
  2337.         }
  2338.         $cars $this->vehicleRepository->getNewByDealer($this->getDealer());
  2339.         /** @var Vehicle $car */
  2340.         foreach ($cars as $car) {
  2341.             $result[] = [
  2342.                 'url' => $router->generate('haval_card_car', ['car' => $car->getUrl()]),
  2343.                 'priority' => '0.8',
  2344.                 'changefreq' => 'daily',
  2345.             ];
  2346.             $result[] = [
  2347.                 'url' => $router->generate('haval_card_car_configuraion', ['car' => $car->getUrl()]),
  2348.                 'priority' => '0.8',
  2349.                 'changefreq' => 'daily',
  2350.             ];
  2351.         }
  2352.         $post $this
  2353.             ->em
  2354.             ->getRepository(Post::class)
  2355.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2356.         /** @var Post $one */
  2357.         foreach ($post as $one) {
  2358.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2359.                 $url $router->generate('haval_about_news_single', ['url' => $one->getUrl()]);
  2360.             }
  2361.             $result[] = [
  2362.                 'url' => $url,
  2363.                 'priority' => '0.3',
  2364.                 'changefreq' => 'monthly',
  2365.             ];
  2366.         }
  2367.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  2368.         foreach ($models as $model) {
  2369.             $result[] = [
  2370.                 'url' => $router->generate('haval_service_regulations_to_model', ['model' => $model['url']]),
  2371.                 'priority' => '0.5',
  2372.                 'changefreq' => 'daily',
  2373.             ];
  2374.         }
  2375.         $usedVehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  2376.         foreach ($usedVehicles as $vehicle) {
  2377.             $result[] = [
  2378.                 'url' => $router->generate('haval_used_car_single', ['url' => $vehicle->getUrl()]),
  2379.                 'priority' => '0.8',
  2380.                 'changefreq' => 'daily',
  2381.             ];
  2382.         }
  2383.         $allActions $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer());
  2384.         foreach ($allActions as $item) {
  2385.             $result[] = [
  2386.                 'url' => $router->generate('haval_stocks_single', ['url' => $item->getUrl()]),
  2387.                 'priority' => '0.6',
  2388.                 'changefreq' => 'daily',
  2389.             ];
  2390.         }
  2391.         $pages $this->em
  2392.             ->getRepository(ModelRangePages::class)
  2393.             ->createQueryBuilder('p')
  2394.             ->where('p.dealer = :dealer')
  2395.             ->andWhere('p.active = 1')
  2396.             ->setParameter('dealer'$this->getDealer())
  2397.             ->getQuery()
  2398.             ->getResult();
  2399.         if (!empty($pages)) {
  2400.             foreach ($pages as $page) {
  2401.                 $result[] = [
  2402.                     'url' => $router->generate('haval_model_lineup_pages', ['url' => $page->getUrl()]),
  2403.                     'priority' => '0.3',
  2404.                     'changefreq' => 'monthly'
  2405.                 ];
  2406.             }
  2407.         }
  2408.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'haval_sitemap']);
  2409.         $response->headers->set('Content-Type''application/xml');
  2410.         $response->setCharset('utf-8');
  2411.         return $response;
  2412.     }
  2413.     public function marine(Catalog $catalogModel): Response
  2414.     {
  2415.         $root $this->getParameter('kernel.project_dir');
  2416.         $routingFile $root '/src/DcSiteBundle/Resources/config/routing/marine/marine_sitemap.yml';
  2417.         $routes Yaml::parseFile($routingFile);
  2418.         $result = [];
  2419.         $router $this->router;
  2420.         foreach ($routes as $rName => $route) {
  2421.             try {
  2422.                 $url $router->generate($rName);
  2423.             } catch (Exception $e) {
  2424.                 continue;
  2425.             }
  2426.             if ($rName == 'marine_homepage') {
  2427.                 $result[] = [
  2428.                     'url' => $url,
  2429.                     'priority' => '1',
  2430.                     'changefreq' => 'always',
  2431.                 ];
  2432.             } else {
  2433.                 $result[] = [
  2434.                     'url' => $url,
  2435.                     'priority' => '0.8',
  2436.                     'changefreq' => 'daily',
  2437.                 ];
  2438.             }
  2439.         }
  2440.         $vehicles $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'choven']]);
  2441.         /** @var Vehicle $vehicle */
  2442.         foreach ($vehicles as $vehicle) {
  2443.             $result[] = [
  2444.                 'url' => $router->generate('marine_catalog_boats_single', ['model' => $vehicle->getUrl()]),
  2445.                 'priority' => '0.5',
  2446.                 'changefreq' => 'daily',
  2447.             ];
  2448.         }
  2449.         $vehicles $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'chovnovy_motor']]);
  2450.         /** @var Vehicle $vehicle */
  2451.         foreach ($vehicles as $vehicle) {
  2452.             $result[] = [
  2453.                 'url' => $router->generate('marine_catalog_jetskis_single', ['model' => $vehicle->getUrl()]),
  2454.                 'priority' => '0.5',
  2455.                 'changefreq' => 'daily',
  2456.             ];
  2457.         }
  2458.         $vehicles $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'gidrocikl']]);
  2459.         /** @var Vehicle $vehicle */
  2460.         foreach ($vehicles as $vehicle) {
  2461.             $result[] = [
  2462.                 'url' => $router->generate('marine_catalog_motors_single', ['model' => $vehicle->getUrl()]),
  2463.                 'priority' => '0.5',
  2464.                 'changefreq' => 'daily',
  2465.             ];
  2466.         }
  2467.         $post $this
  2468.             ->em
  2469.             ->getRepository(Post::class)
  2470.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
  2471.         /** @var Post $one */
  2472.         foreach ($post as $one) {
  2473.             if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
  2474.                 $url $router->generate('marine_news_single', ['url' => $one->getUrl()]);
  2475.             }
  2476.             $result[] = [
  2477.                 'url' => $url,
  2478.                 'priority' => '0.3',
  2479.                 'changefreq' => 'monthly',
  2480.             ];
  2481.         }
  2482.         $response $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result'route' => 'marine_sitemap']);
  2483.         $response->headers->set('Content-Type''application/xml');
  2484.         $response->setCharset('utf-8');
  2485.         return $response;
  2486.     }
  2487.     public function shopAccessorySiteMap(Request $request): Response
  2488.     {
  2489.         $router $this->router;
  2490.         $result = [];
  2491.         $result[] = [
  2492.             'url' => $router->generate('shop_accessory_catalog'),
  2493.             'priority' => '1',
  2494.             'changefreq' => 'daily',
  2495.         ];
  2496.         $serviceWorkAccessory $this->em->getRepository(ServiceWorkGroup::class)->getGroupsWhereDealerIsNullAndNotServices();
  2497.         /** @var ServiceWorkGroup $item */
  2498.         foreach ($serviceWorkAccessory as $item) {
  2499.             if ($item->getUrl() != null) {
  2500.                 $result[] = [
  2501.                     'url' => $router->generate('shop_accessory_category', ['categoryUrl' => $item->getUrl()]),
  2502.                     'priority' => '0.8',
  2503.                     'changefreq' => 'daily',
  2504.                 ];
  2505.             }
  2506.         }
  2507.         $serviceWorkGroupModel $this->em->getRepository(ServiceWorkGroup::class)->getGroupsByDealer($this->getDealer());
  2508.         foreach ($serviceWorkGroupModel as $item) {
  2509.             $result[] = [
  2510.                 'url' => $router->generate('shop_accessory_category_model', ['categoryUrl' => $item['groupUrl'], 'modelUrl' => $item['modelUrl']]),
  2511.                 'priority' => '0.8',
  2512.                 'changefreq' => 'daily',
  2513.             ];
  2514.         }
  2515.         $serviceWorkAccessory $this->em->getRepository(ServiceWork::class)->findBy(['dealer' => $this->getDealer(), 'is_accessory' => true]);
  2516.         /** @var ServiceWork $item */
  2517.         foreach ($serviceWorkAccessory as $item) {
  2518.             $result[] = [
  2519.                 'url' => $router->generate('shop_accessory_page', ['workId' => $item->getId()]),
  2520.                 'priority' => '0.6',
  2521.                 'changefreq' => 'daily',
  2522.             ];
  2523.         }
  2524.         $response $this->render('@DcSite/sitemap.xml.twig', [
  2525.             'urls' => $result,
  2526.             'route' => $request->get('_route')
  2527.         ]);
  2528.         $response->headers->set('Content-Type''application/xml');
  2529.         $response->setCharset('utf-8');
  2530.         return $response;
  2531.     }
  2532.     public function shopImagesSiteMap(Request $requestAccessoryShopService $accessoryShopServiceImageProviderVidi $imageProviderVidi): Response
  2533.     {
  2534.         $result = [];
  2535.         $accessories $accessoryShopService->getAccessoryByDealer($this->getDealer());
  2536.         foreach ($accessories as $accessory) {
  2537.             if (!$accessory['gallery']) {
  2538.                 continue;
  2539.             }
  2540.             if (count($accessory['gallery']->getGalleryItems()) == 0) {
  2541.                 continue;
  2542.             }
  2543.             $mediaPaths = [];
  2544.             $galleryItems $accessory['gallery']->getGalleryItems();
  2545.             foreach ($galleryItems as $galleryItem) {
  2546.                 $mediaPaths[] = $request->getHost() . '/uploads/media/' $imageProviderVidi->generatePath($galleryItem->getMedia()) .
  2547.                     '/' $galleryItem->getMedia()->getProviderReference();
  2548.             }
  2549.             $result[] = [
  2550.                 'accessoryUrl' => $request->getHost() . '/product/' $accessory['id'] . '.html',
  2551.                 'mediaPath' => $mediaPaths
  2552.             ];
  2553.         }
  2554.         $response $this->render(
  2555.             '@DcSite/sitemap-images.xml.twig',
  2556.             ['result' => $result]
  2557.         );
  2558.         $response->headers->set('Content-Type''application/xml');
  2559.         $response->setCharset('utf-8');
  2560.         return $response;
  2561.     }
  2562. }