<?php
namespace DcSiteBundle\Controller;
use CoreBundle\Component\CoreFormFactory;
use CoreBundle\Component\FormManager;
use CoreBundle\Entity\Post;
use CoreBundle\Entity\Vehicles\Category;
use CoreBundle\Entity\Vehicles\InStock;
use CoreBundle\Entity\Vehicles\Vehicle;
use CoreBundle\Factory\Vehicle as VehicleFactory;
use CoreBundle\Model\Api\OnlineService\ApiServer1C;
use CoreBundle\Model\Post as PostModel;
use CoreBundle\Model\Vehicles\InStockRepository;
use CoreBundle\Model\Vehicles\Repository;
use CoreBundle\Model\Vehicles\VehicleType;
use CoreBundle\Services\ImageProviderVidi;
use CoreBundle\Services\MediaExtensionVidi;
use DcSiteBundle\Controller\ToyotaBorispol\CarController;
use DcSiteBundle\Entity\Boat;
use DcSiteBundle\Entity\ModelRangePages;
use DcSiteBundle\Entity\ServiceVariation;
use DcSiteBundle\Entity\ServiceWork;
use DcSiteBundle\Entity\ServiceWorkGroup;
use DcSiteBundle\Entity\Vacancy;
use DcSiteBundle\Enum\DealerPathEnum;
use DcSiteBundle\Model\Catalog;
use DcSiteBundle\Services\AccessoryShopService;
use DcSiteBundle\Services\ModelRange\Pages\PagesService;
use DcSiteBundle\Services\ServicePageService;
use DcSiteBundle\Services\UsedVehicleService;
use DcSiteBundle\Services\VehicleService;
use Doctrine\ORM\EntityManagerInterface;
use Exception;
use PortalBundle\Model\SeoMetaTag;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Yaml\Yaml;
use Twig\Environment;
class SiteMapController extends BaseDcController
{
public function __construct(CoreFormFactory $coreFormFactory, SeoMetaTag $seoMetaTag, RequestStack $requestStack, RouterInterface $router, FormManager $formManager, EntityManagerInterface $em, ApiServer1C $apiServer1C, SessionInterface $session, Filesystem $filesystem, MediaExtensionVidi $mediaExtensionVidi, Repository $vehicleRepository, VehicleFactory $vehicleFactory, Environment $twig)
{
parent::__construct($coreFormFactory, $seoMetaTag, $requestStack, $router, $formManager, $em, $apiServer1C, $session, $filesystem, $mediaExtensionVidi, $vehicleRepository, $vehicleFactory, $twig);
}
public function suzuki(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/suzuki/suzuki_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
foreach (['ru', 'ua'] as $locale) {
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName, ['_locale' => $locale]);
} catch (Exception $e) {
continue;
}
$p = '0.5';
$c = 'daily';
if ($rName == 'suzuki_homepage') {
$p = '1';
$c = 'always';
}
$result[] = [
'url' => $url,
'priority' => $p,
'changefreq' => $c,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
switch ($car->getVehicleType()) {
case VehicleType::PASSENGER_TYPE:
$rName = 'suzuki_card_car';
$r2Name = 'suzuki_card_car_configuraion';
$key = 'car';
break;
// case VehicleType::MOTO_TYPE:
// $rName = 'suzuki_card_moto';
// $r2Name = 'suzuki_card_moto_configuraion';
// $key = 'moto';
// break;
default:
$rName = false;
break;
}
if (!$rName) {
continue;
}
$result[] = [
'url' => $router->generate($rName, [$key => $car->getUrl(), '_locale' => $locale]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate($r2Name, [$key => $car->getUrl(), '_locale' => $locale]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('suzuki_about_news_single', ['url' => $one->getUrl(), '_locale' => $locale]);
} else {
$url = $router->generate('suzuki_stocks_single', ['url' => $one->getUrl(), '_locale' => $locale]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('suzuki_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$usedCars = $this->vehicleRepository->getUsed($this->getDealer(), true);
/** @var Vehicle $car */
foreach ($usedCars as $car) {
$result[] = [
'url' => $router->generate('suzuki_used_car_single', ['url' => $car->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('suzuki_model_lineup_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'ford_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function ford(Request $request, InStockRepository $inStockRepositoryModel, VehicleService $vehicleService): ?Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/ford/ford_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$priority = '0.5';
$changefreq = 'daily';
if ($rName == 'ford_service_accessories') {
continue;
}
if ($rName == 'ford_homepage') {
$priority = '1';
$changefreq = 'always';
}
$result[] = [
'url' => $url,
'priority' => $priority,
'changefreq' => $changefreq,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('ford_one_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('ford_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$archiveCars = $this->vehicleRepository->getDisabled($this->getDealer());
/** @var Vehicle $car */
foreach ($archiveCars as $car) {
$result[] = [
'url' => $router->generate('ford_one_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('ford_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$vacancies = $this->em->getRepository(Vacancy::class)->getByDealer($this->getDealer());
/** @var Vacancy $vacancy */
foreach ($vacancies as $vacancy) {
$result[] = [
'url' => $router->generate('ford_about_vacancy_id', ['id' => $vacancy->getId()]),
'priority' => '0.2',
'changefreq' => 'monthly',
];
}
$post = $this->em->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
$result[] = [
'url' => $router->generate('ford_get_post', ['url' => $one->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$inStock = $inStockRepositoryModel->getByDealer($this->getDealer());
/** @var InStock $vehicle */
foreach ($inStock as $vehicle) {
$result[] = [
'url' => $router->generate('ford_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
'priority' => '0.8',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('ford_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$usedCars = $this->vehicleRepository->getUsed($this->getDealer(), true);
/** @var Vehicle $car */
foreach ($usedCars as $car) {
$result[] = [
'url' => $router->generate('ford_used_car_single', ['url' => $car->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('ford_list_cars_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$carList = $this->getModelMenuItems($request->getLocale(), 'small');
foreach ($carList as $category) {
$result[] = [
'url' => $router->generate('ford_model_catalog_category', ['category' => $category['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'ford_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function jeep(Request $request, VehicleService $vehicleService, UsedVehicleService $usedVehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/jeep/jeep_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
$dealer = $this->getDealer();
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'jeep_public_offer') {
continue;
}
if ($rName == 'jeep_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
if ($car->getIsUsed()) {
continue;
} else {
$result[] = [
'url' => $router->generate('jeep_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
}
$vacancies = $this->em->getRepository(Vacancy::class)->getByDealer($dealer);
/** @var Vacancy $vacancy */
foreach ($vacancies as $vacancy) {
$result[] = [
'url' => $router->generate('jeep_about_vacancy_id', ['id' => $vacancy->getId()]),
'priority' => '0.3',
'changefreq' => 'daily',
];
}
$vehicles = $this->em->getRepository(Vehicle::class)->getNewByDealer($dealer);
/** @var Vehicle $vehicles */
foreach ($vehicles as $vehicle) {
$result[] = [
'url' => $router->generate('jeep_technical_characteristics', ['model' => $vehicle->geturl()]),
'priority' => '0.7',
'changefreq' => 'daily',
];
}
$vehiclesInStock = $this->em->getRepository(InStock::class)->getByDealer($dealer);
/** @var InStock $vehiclesInStock */
foreach ($vehiclesInStock as $vehicleInStock) {
$result[] = [
'url' => $router->generate('jeep_car_in_stock_single', ['url' => $vehicleInStock->geturl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$news = $this->em->getRepository(Post::class)->getNewsByDealer($dealer);
/** @var Post $news */
foreach ($news as $new) {
$result[] = [
'url' => $router->generate('jeep_news_single', ['news' => $new->geturl()]),
'priority' => '0.3',
'changefreq' => 'daily',
];
}
$vehiclesServices = $vehicleService->getModelsForRegulationsTo($dealer);
/** @var VehicleService $vehiclesServices */
foreach ($vehiclesServices as $vehicleService) {
$result[] = [
'url' => $router->generate('jeep_service_regulations_to_model', ['model' => $vehicleService['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$usedVehicles = $usedVehicleService->getUsedVehiclesForSitemap($this->getDealer(), DealerPathEnum::JEEP, $request->getLocale());
foreach ($usedVehicles as $usedVehicle) {
$result[] = [
'url' => $router->generate('jeep_used_car_single', ['url' => $usedVehicle]),
'priority' => '0.7',
'changefreq' => 'daily',
];
}
$posts = $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer());
/** @var Post $post */
foreach ($posts as $post) {
if ($post->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('jeep_news_single', ['news' => $post->getUrl()]);
} else {
$url = $router->generate('jeep_actions_single', ['actions' => $post->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$response = $this->render('@DcSite/sitemap.xml.twig', [
'urls' => $result,
'route' => 'jeep_sitemap'
]);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function mazda(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/mazda/mazda_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$priority = '0.5';
$changefreq = 'daily';
if ($rName == 'mazda_service_souvenirs_ajax') {
continue;
}
if ($rName == 'mazda_homepage') {
$priority = '1';
$changefreq = 'always';
}
$result[] = [
'url' => $url,
'priority' => $priority,
'changefreq' => $changefreq,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('mazda_car_configurator', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('mazda_card_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('mazda_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('mazda_about_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('mazda_stocks_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$usedVehicles = $this->vehicleRepository->getUsedByDealer($this->getDealer());
foreach ($usedVehicles as $vehicle) {
$result[] = [
'url' => $router->generate('mazda_used_car_single', ['url' => $vehicle->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('mazda_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('mazda_model_lineup_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'ford_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function peugeot(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/peugeot/peugeot_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
foreach (['ru', 'ua'] as $locale) {
$router = $this->router;
foreach ($routes as $rName => $route) {
if ($rName == 'peugeot_accessories_redirect') {
continue;
}
if ($rName == 'peugeot_public_offer') {
continue;
}
try {
$url = $router->generate($rName, ['_locale' => $locale]);
} catch (Exception $e) {
continue;
}
$p = '0.5';
$c = 'daily';
if ($rName == 'peugeot_homepage') {
$p = '1';
$c = 'always';
}
$result[] = [
'url' => $url,
'priority' => $p,
'changefreq' => $c,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('peugeot_card_car', ['car' => $car->getUrl(), '_locale' => $locale]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router
->generate(
'peugeot_about_news_single',
['url' => $one->getUrl(), '_locale' => $locale]
);
} else {
$url = $router->generate('peugeot_stocks_single', ['url' => $one->getUrl(), '_locale' => $locale]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
if ($model['url'] == '') {
continue;
}
$result[] = [
'url' => $router->generate('peugeot_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$usedVehicles = $this->vehicleRepository->getUsedByDealer($this->getDealer());
foreach ($usedVehicles as $vehicle) {
$result[] = [
'url' => $router->generate('peugeot_used_car_single', ['url' => $vehicle->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('peugeot_model_lineup_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'peugeot_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function subaru(InStockRepository $inStockRepository, UsedVehicleService $usedVehicleService, VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/subaru/subaru_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
foreach (['ru', 'ua'] as $locale) {
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName, ['_locale' => $locale]);
} catch (Exception $e) {
continue;
}
$p = '0.5';
$c = 'daily';
if ($rName == 'subaru_homepage') {
$p = '1';
$c = 'always';
}
if ($rName == 'subaru_service_accessories' || $rName == 'subaru_check_vin_ajax') {
continue;
}
$result[] = [
'url' => $url,
'priority' => $p,
'changefreq' => $c,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('subaru_card_car', ['car' => $car->getUrl(), '_locale' => $locale]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate(
'subaru_card_car_configuraion',
['car' => $car->getUrl(), '_locale' => $locale]
),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$inStock = $inStockRepository->getByDealer($this->getDealer());
/** @var InStock $vehicle */
foreach ($inStock as $vehicle) {
$result[] = [
'url' => $router->generate('subaru_instock_car_card', ['url' => $vehicle->getUrl(), '_locale' => $locale]),
'priority' => '0.8',
'changefreq' => 'monthly',
];
}
$usedCars = $usedVehicleService->getUsedVehiclesForSitemap($this->getDealer(), DealerPathEnum::SUBARU, $locale);
/** @var Vehicle $car */
foreach ($usedCars as $car) {
$result[] = [
'url' => $router->generate('subaru_used_car_single', ['url' => $car, '_locale' => $locale]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate(
'subaru_about_news_single',
['url' => $one->getUrl(), '_locale' => $locale]
);
} else {
$url = $router->generate('subaru_stocks_single', ['url' => $one->getUrl(), '_locale' => $locale]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('subaru_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'ford_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function infiniti(VehicleService $vehicleService, InStockRepository $inStockRepositoryModel): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/infiniti/infiniti_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$priority = '0.5';
$changefreq = 'daily';
if ($rName == 'infiniti_public_offer') {
continue;
}
if ($rName == 'infiniti_homepage') {
$priority = '1';
$changefreq = 'always';
}
$result[] = [
'url' => $url,
'priority' => $priority,
'changefreq' => $changefreq,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('infiniti_card_car', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this
->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('infiniti_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('infiniti_special_offers_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('infiniti_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$inStock = $inStockRepositoryModel->getByDealer($this->getDealer());
/** @var InStock $vehicle */
foreach ($inStock as $vehicle) {
$result[] = [
'url' => $router->generate('infiniti_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
'priority' => '0.3',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('infiniti_model_car_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'ford_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function yamaha(): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/yamaha/yamaha_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$priority = '0.5';
$changefreq = 'daily';
if ($rName == 'yamaha_homepage') {
$priority = '1';
$changefreq = 'always';
}
$result[] = [
'url' => $url,
'priority' => $priority,
'changefreq' => $changefreq,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('yamaha_catalog_model_card', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$usedCars = $this->vehicleRepository->getUsedByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($usedCars as $car) {
$result[] = [
'url' => $router->generate('yamaha_commission_tehnology_model', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$boats = $this->em->getRepository(Boat::class)->findBy(['state' => 1]);
/** @var Boat $boat */
foreach ($boats as $boat) {
$result[] = [
'url' => $router->generate('yamaha_boat_card', ['url' => $boat->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
//TODO remove magic numbers
foreach ([12, 13, 16] as $group) {
$result[] = [
'url' => $router->generate(
'yamaha_catalog_all_groups_by_body',
['categoryUrl' => 'all', 'bodyId' => $group]
),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('yamaha_about_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('yamaha_stocks_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$response = $this->render(
'@DcSite/sitemap.xml.twig',
['urls' => $result, 'route' => 'nissan_sitemap']
);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function nissan(VehicleService $vehicleService, InStockRepository $inStockRepositoryModel): ?Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/nissan/nissan_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$priority = '0.5';
$changefreq = 'daily';
if ($rName == 'nissan_homepage') {
$priority = '1';
$changefreq = 'always';
}
$result[] = [
'url' => $url,
'priority' => $priority,
'changefreq' => $changefreq,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
$categories = [];
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate(
'nissan_one_car',
['car' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]
),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate(
'nissan_one_car_configuraion',
['car' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]
),
'priority' => '0.8',
'changefreq' => 'daily',
];
$catID = $car->getCategory()->getId();
if (!isset($categories[$catID])) {
$categories[$catID] = 1;
$result[] = [
'url' => $router->generate(
'nissan_category_catalog',
['category' => $car->getCategory()->getUrl()]
),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('nissan_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('nissan_stocks_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$usedVehicles = $this->vehicleRepository->getUsedByDealer($this->getDealer());
foreach ($usedVehicles as $vehicle) {
$result[] = [
'url' => $router->generate('nissan_used_car_single', ['url' => $vehicle->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('nissan_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$inStock = $inStockRepositoryModel->getByDealer($this->getDealer());
/** @var InStock $vehicle */
foreach ($inStock as $vehicle) {
$result[] = [
'url' => $router->generate('nissan_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('nissan_catalog_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render(
'@DcSite/sitemap.xml.twig',
['urls' => $result, 'route' => 'nissan_sitemap']
);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function volvo(VehicleService $vehicleService): ?Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/volvo/volvo_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$priority = '0.5';
$changefreq = 'daily';
if ($rName == 'volvo_homepage') {
$priority = '1';
$changefreq = 'always';
}
if ($rName == 'volvo_public_offer' || 'volvo_basket') {
continue;
}
$result[] = [
'url' => $url,
'priority' => $priority,
'changefreq' => $changefreq,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('volvo_card_car', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$archiveCars = $this->vehicleRepository->getDisabled($this->getDealer());
/** @var Vehicle $car */
foreach ($archiveCars as $car) {
$result[] = [
'url' => $router->generate('volvo_card_car', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this
->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('volvo_about_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('volvo_special_offers_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('volvo_service_calculation_valuation_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('volvo_model_lineup_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'volvo_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function landrover(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/landrover/landrover_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$p = '0.5';
$c = 'daily';
if ($rName == 'landrover_service_acc') {
continue;
}
if ($rName == 'landrover_homepage') {
$p = '1';
$c = 'always';
}
$result[] = [
'url' => $url,
'priority' => $p,
'changefreq' => $c,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('landrover_card_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$usedCars = $this->vehicleRepository->getUsedByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($usedCars as $car) {
$result[] = [
'url' => $router->generate('landrover_used_card_car', ['id' => $car->getId()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this
->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('landrover_aboutus_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('landrover_special_offers_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('landrover_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$response = $this->render(
'@DcSite/sitemap.xml.twig',
['urls' => $result, 'route' => 'landrover_sitemap']
);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function jaguar(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/jaguar/jaguar_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'jaguar_service_testdrive_form') {
continue;
}
if ($rName == 'jaguar_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('jaguar_card_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$usedCars = $this->vehicleRepository->getUsedByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($usedCars as $car) {
$result[] = [
'url' => $router->generate('jaguar_used_card_car', ['id' => $car->getId()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this
->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate(
'jaguar_aboutus_news-single',
['url' => $one->getUrl()],
UrlGeneratorInterface::ABSOLUTE_URL
);
} else {
$url = $router->generate(
'jaguar_special_offers_single',
['url' => $one->getUrl()],
UrlGeneratorInterface::ABSOLUTE_URL
);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('jaguar_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'jaguar_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function nissanArmada(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/nissan_armada/nissan_armada_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$priority = '0.5';
$changefreq = 'daily';
if ($rName == 'nissan_armada_homepage') {
$priority = '1';
$changefreq = 'always';
}
$result[] = [
'url' => $url,
'priority' => $priority,
'changefreq' => $changefreq,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
$categories = [];
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate(
'nissan_armada_one_car',
['car' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]
),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate(
'nissan_armada_one_car_configuraion',
['car' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]
),
'priority' => '0.8',
'changefreq' => 'daily',
];
$catID = $car->getCategory()->getId();
if (!isset($categories[$catID])) {
$categories[$catID] = 1;
$result[] = [
'url' => $router->generate(
'nissan_armada_category_catalog',
['category' => $car->getCategory()->getUrl()]
),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
}
$post = $this->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('nissan_armada_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('nissan_armada_stocks_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('nissan_armada_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('nissan_armada_catalog_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render(
'@DcSite/sitemap.xml.twig',
['urls' => $result, 'route' => 'nissan_armada_sitemap']
);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function palmira(Request $request, VehicleService $vehicleService, InStockRepository $inStockRepositoryModel): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/toyota_odessa/toyota_odessa_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
$p = '0.5';
$c = 'daily';
if ($rName == 'toyota_odessa_homepage') {
$p = '1';
$c = 'always';
}
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'toyota_odessa_basket') {
continue;
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('toyota_odessa_one_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('toyota_odessa_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$carList = $this->getModelMenuItems($request->getLocale(), 'small');
foreach ($carList as $category) {
$result[] = [
'url' => $router->generate('toyota_odessa_car_catalog_category', ['category' => $category['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$inStock = $inStockRepositoryModel->getByDealer($this->getDealer());
/** @var InStock $vehicle */
foreach ($inStock as $vehicle) {
$result[] = [
'url' => $router->generate('toyota_odessa_car_in_stock_car', ['url' => $vehicle->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$post = $this->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('toyota_odessa_about_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('toyota_odessa_action_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
if ($model['url'] == '') {
continue;
}
$result[] = [
'url' => $router->generate('toyota_odessa_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$result[] = [
'url' => $router->generate('toyota_odessa_action_list', ['type' => 'stocks_cars']),
'priority' => '0.3',
'changefreq' => 'monthly',
];
$result[] = [
'url' => $router->generate('toyota_odessa_action_list', ['type' => 'stocks_service']),
'priority' => '0.3',
'changefreq' => 'monthly',
];
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('toyota_odessa_catalog_list_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render(
'@DcSite/sitemap.xml.twig',
['urls' => $result, 'route' => 'toyota_odessa_sitemap']
);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function lexus(Request $request, VehicleService $vehicleService, PagesService $pagesService, InStockRepository $inStockRepositoryModel): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/lexus/lexus_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
$priority = '0.5';
$changefreq = 'daily';
if ($rName == 'lexus_homepage') {
$priority = '1';
$changefreq = 'always';
}
if ($rName == 'lexus_configurator_action') {
$result[] = [
'url' => $router->generate('lexus_card_car', ['url' => 'start']),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
$result[] = [
'url' => $url,
'priority' => $priority,
'changefreq' => $changefreq,
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('lexus_configurator_action', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('lexus_card_car', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('lexus_card_car_configuraion', ['url' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
foreach ($cars as $car) {
$categories[] = $car->getCategory()->getUrl();
}
foreach (array_unique($categories) as $category) {
$result[] = [
'url' => $router->generate('lexus_car_catalog_category', ['url' => $category]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$group = $pagesService->setLang($request->getLocale())->getPages($this->getDealer());
foreach ($group as $item) {
$result[] = [
'url' => $router->generate('lexus_car_catalog_pages', ['url' => $item['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$inStock = $inStockRepositoryModel->getByDealer($this->getDealer());
foreach ($inStock as $car) {
$result[] = [
'url' => $router->generate('lexus_car_stock_single', ['url' => $car->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$usedCars = $this->vehicleRepository->getUsed($this->getDealer(), true);
/** @var Vehicle $car */
foreach ($usedCars as $car) {
$result[] = [
'url' => $router->generate('lexus_used_car_single', ['url' => $car->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('lexus_about_us_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('lexus_stocks_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
if ($model['url'] == '') {
continue;
}
$result[] = [
'url' => $router->generate('lexus_service_price_for_car_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$response = $this->render(
'@DcSite/sitemap.xml.twig',
['urls' => $result, 'route' => 'toyota_odessa_sitemap']
);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function toyota(Request $request, InStockRepository $inStockRepositoryModel, ServicePageService $servicePageService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/toyota/toyota_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'toyota_about_mytoyota' || $rName == 'toyota_configurator_action' || $rName == 'toyota_accessories') {
continue;
}
if ($rName == 'toyota_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$models = Toyota\CarController::MODEL_FRAME;
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('toyota_secondhand_model', ['model' => $model]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$inStock = $inStockRepositoryModel->getByDealer($this->getDealer());
/** @var InStock $vehicle */
foreach ($inStock as $vehicle) {
$result[] = [
'url' => $router->generate('toyota_in_stock_car', ['url' => $vehicle->getUrl()]),
'priority' => '0.8',
'changefreq' => 'monthly',
];
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
if ($car->getIsUsed()) {
continue;
} else {
$result[] = [
'url' => $router->generate('toyota_one_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('toyota_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$services = $servicePageService->getServiceByDealer($this->getDealer());
foreach ($services as $service) {
foreach ($service['pages'] as $page) {
$result[] = [
'url' => $router->generate('toyota_service_page', ['url' => $page->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('toyota_about_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('toyota_action_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$brandId = $this->getDealer()->getBrand()->getId();
$variations = $this->em
->getRepository(ServiceVariation::class)
->getRegulationVariations($this->getDealer(), $brandId);
$uniqueModel = [];
foreach ($variations as $variation) {
$model = $variation->getModel();
if ($model->getUrl() == '') {
continue;
}
if (!in_array($model->getUrl(), $uniqueModel)) {
$result[] = [
'url' => $router->generate('toyota_service_regulations_to_model', ['model' => $model->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly',
];
$uniqueModel[] = $model->getUrl();
}
}
$carList = $this->getModelMenuItems($request->getLocale(), 'small');
foreach ($carList as $category) {
$result[] = [
'url' => $router->generate('toyota_car_catalog_category', ['category' => $category['url']]),
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('toyota_car_catalog_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render(
'@DcSite/sitemap.xml.twig',
['urls' => $result, 'route' => 'toyota_odessa_sitemap']
);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function toyotaBorispol(Request $request, ServicePageService $servicePageService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/toyota_borispol/toyota_borispol_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'toyota_borispol_service_page' ||
$rName == 'toyota_borispol_used_car_model' ||
$rName == 'toyota_borispol_service_regulations_to_model' ||
$rName == 'toyota_borispol_service_replacement_car_form' ||
$rName == 'toyota_borispol_basket' ||
$rName == 'toyota_borispol_service_order_rent_cars' ||
$rName == 'toyota_borispol_actions_single') {
continue;
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
if ($rName == 'toyota_borispol_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
}
}
$models = CarController::MODEL_FRAME;
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('toyota_borispol_used_car_model', ['model' => $model]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$serviceRegulationExclusion = [
'yaris-hybrid',
'yaris-cross-hybrid',
'corolla-hybrid',
'camry-hybrid',
'c-hr-hybrid',
'highlander-hybrid',
'rav4-hybrid',
'yaris-cross-hybrid',
'yaris-hybrid',
'camry-hybrid',
'corolla-hybrid',
'c-hr-hybrid',
'rav4-hybrid',
'highlander-hybrid',
];
foreach ($models as $model) {
if (!in_array($model, $serviceRegulationExclusion)) {
$result[] = [
'url' => $router->generate('toyota_borispol_service_regulations_to_model', ['model' => $model]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$posts_car = $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer(), PostModel::ACTION_TYPE_CAR);
$posts_service = $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer(), PostModel::ACTION_TYPE_SERVICE);
$posts = array_merge($posts_car, $posts_service);
foreach ($posts as $post) {
$result[] = [
'url' => $router->generate('toyota_borispol_actions_single', ['url' => $post->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$services = $servicePageService->getServiceByDealer($this->getDealer());
foreach ($services as $service) {
foreach ($service['pages'] as $page) {
$result[] = [
'url' => $router->generate('toyota_borispol_service_page', ['url' => $page->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$posts = $this->em->getRepository(Post::class)->getNewsByDealer($this->getDealer());
/** @var Post $post */
foreach ($posts as $post) {
if ($post->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('toyota_borispol_news_single', ['url' => $post->getUrl()]);
} else {
$url = $router->generate('toyota_borispol_actions_single', ['url' => $post->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$response = $this->render('@DcSite/sitemap.xml.twig', [
'urls' => $result,
'route' => 'toyota_odessa_sitemap'
]);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function unicommerce(Request $request): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/unicommerce/unicommerce_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'unicommerce_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('unicommerce_car_single_without_group',
['vehicleUrl' => $car->getUrl(), 'category' => $car->getCategory()->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$vehicleCategories = $this->em->getRepository(Category::class)->findBy(['vehicle_type' => 6]);
foreach ($vehicleCategories as $category) {
$result[] = [
'url' => $router->generate('unicommerce_car_catalog', ['category' => $category->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$response = $this->render('@DcSite/sitemap.xml.twig', [
'urls' => $result,
'route' => 'unicommerce_sitemap'
]);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function citroen(InStockRepository $inStockRepositoryModel, VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/citroen/citroen_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'citroen_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('citroen_card_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('citroen_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$inStock = $inStockRepositoryModel->getByDealer($this->getDealer());
/** @var InStock $vehicle */
foreach ($inStock as $vehicle) {
$result[] = [
'url' => $router->generate('citroen_cars_in_stock_card', ['url' => $vehicle->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$post = $this->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('citroen_about_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('citroen_stocks_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('citroen_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$usedVehicles = $this->vehicleRepository->getUsedByDealer($this->getDealer());
foreach ($usedVehicles as $vehicle) {
$result[] = [
'url' => $router->generate('citroen_used_car_single', ['url' => $vehicle->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('citroen_model_range_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'honda_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function honda(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/honda/honda_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'honda_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('honda_card_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('honda_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('honda_news_single', ['url' => $one->getUrl()]);
} else {
$url = $router->generate('honda_stocks_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
if ($model['url'] == '') {
continue;
}
$result[] = [
'url' => $router->generate('honda_service_honda_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer(), 32);
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('honda_service_acura_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('honda_model_lineup_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'honda_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function mg(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/morris_garage/morris_garage_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'mg_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('mg_card_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('mg_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('mg_about_news_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
if ($model['url'] == '') {
continue;
}
$result[] = [
'url' => $router->generate('mg_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('mg_model_lineup_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'mg_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function opel(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/opel/opel_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'opel_about_quality_policy' || 'opel_public_offer') {
continue;
}
if ($rName == 'opel_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('opel_card_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('opel_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this->em->getRepository(Post::class)->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('opel_about_news_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
if ($model['url'] == '') {
continue;
}
$result[] = [
'url' => $router->generate('opel_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$usedVehicles = $this->vehicleRepository->getUsedByDealer($this->getDealer());
foreach ($usedVehicles as $vehicle) {
$result[] = [
'url' => $router->generate('opel_used_car_single', ['url' => $vehicle->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$allActions = $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer());
foreach ($allActions as $item) {
$result[] = [
'url' => $router->generate('opel_stocks_single', ['url' => $item->getUrl()]),
'priority' => '0.6',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('opel_model_lineup_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'opel_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function haval(VehicleService $vehicleService): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/haval/haval_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'haval_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.5',
'changefreq' => 'daily',
];
}
}
$cars = $this->vehicleRepository->getNewByDealer($this->getDealer());
/** @var Vehicle $car */
foreach ($cars as $car) {
$result[] = [
'url' => $router->generate('haval_card_car', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
$result[] = [
'url' => $router->generate('haval_card_car_configuraion', ['car' => $car->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$post = $this
->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('haval_about_news_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$models = $vehicleService->getModelsForRegulationsTo($this->getDealer());
foreach ($models as $model) {
$result[] = [
'url' => $router->generate('haval_service_regulations_to_model', ['model' => $model['url']]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$usedVehicles = $this->vehicleRepository->getUsedByDealer($this->getDealer());
foreach ($usedVehicles as $vehicle) {
$result[] = [
'url' => $router->generate('haval_used_car_single', ['url' => $vehicle->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$allActions = $this->em->getRepository(Post::class)->getActionsByDealer($this->getDealer());
foreach ($allActions as $item) {
$result[] = [
'url' => $router->generate('haval_stocks_single', ['url' => $item->getUrl()]),
'priority' => '0.6',
'changefreq' => 'daily',
];
}
$pages = $this->em
->getRepository(ModelRangePages::class)
->createQueryBuilder('p')
->where('p.dealer = :dealer')
->andWhere('p.active = 1')
->setParameter('dealer', $this->getDealer())
->getQuery()
->getResult();
if (!empty($pages)) {
foreach ($pages as $page) {
$result[] = [
'url' => $router->generate('haval_model_lineup_pages', ['url' => $page->getUrl()]),
'priority' => '0.3',
'changefreq' => 'monthly'
];
}
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'haval_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function marine(Catalog $catalogModel): Response
{
$root = $this->getParameter('kernel.project_dir');
$routingFile = $root . '/src/DcSiteBundle/Resources/config/routing/marine/marine_sitemap.yml';
$routes = Yaml::parseFile($routingFile);
$result = [];
$router = $this->router;
foreach ($routes as $rName => $route) {
try {
$url = $router->generate($rName);
} catch (Exception $e) {
continue;
}
if ($rName == 'marine_homepage') {
$result[] = [
'url' => $url,
'priority' => '1',
'changefreq' => 'always',
];
} else {
$result[] = [
'url' => $url,
'priority' => '0.8',
'changefreq' => 'daily',
];
}
}
$vehicles = $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'choven']]);
/** @var Vehicle $vehicle */
foreach ($vehicles as $vehicle) {
$result[] = [
'url' => $router->generate('marine_catalog_boats_single', ['model' => $vehicle->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$vehicles = $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'chovnovy_motor']]);
/** @var Vehicle $vehicle */
foreach ($vehicles as $vehicle) {
$result[] = [
'url' => $router->generate('marine_catalog_jetskis_single', ['model' => $vehicle->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$vehicles = $catalogModel->getVehicle($this->getDealer(), ['characteristic' => ['url' => 'gidrocikl']]);
/** @var Vehicle $vehicle */
foreach ($vehicles as $vehicle) {
$result[] = [
'url' => $router->generate('marine_catalog_motors_single', ['model' => $vehicle->getUrl()]),
'priority' => '0.5',
'changefreq' => 'daily',
];
}
$post = $this
->em
->getRepository(Post::class)
->findBy(['dealer' => $this->getDealer(), 'state' => 1]);
/** @var Post $one */
foreach ($post as $one) {
if ($one->getPostType() == PostModel::POST_TYPE_NEWS) {
$url = $router->generate('marine_news_single', ['url' => $one->getUrl()]);
}
$result[] = [
'url' => $url,
'priority' => '0.3',
'changefreq' => 'monthly',
];
}
$response = $this->render('@DcSite/sitemap.xml.twig', ['urls' => $result, 'route' => 'marine_sitemap']);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function shopAccessorySiteMap(Request $request): Response
{
$router = $this->router;
$result = [];
$result[] = [
'url' => $router->generate('shop_accessory_catalog'),
'priority' => '1',
'changefreq' => 'daily',
];
$serviceWorkAccessory = $this->em->getRepository(ServiceWorkGroup::class)->getGroupsWhereDealerIsNullAndNotServices();
/** @var ServiceWorkGroup $item */
foreach ($serviceWorkAccessory as $item) {
if ($item->getUrl() != null) {
$result[] = [
'url' => $router->generate('shop_accessory_category', ['categoryUrl' => $item->getUrl()]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
}
$serviceWorkGroupModel = $this->em->getRepository(ServiceWorkGroup::class)->getGroupsByDealer($this->getDealer());
foreach ($serviceWorkGroupModel as $item) {
$result[] = [
'url' => $router->generate('shop_accessory_category_model', ['categoryUrl' => $item['groupUrl'], 'modelUrl' => $item['modelUrl']]),
'priority' => '0.8',
'changefreq' => 'daily',
];
}
$serviceWorkAccessory = $this->em->getRepository(ServiceWork::class)->findBy(['dealer' => $this->getDealer(), 'is_accessory' => true]);
/** @var ServiceWork $item */
foreach ($serviceWorkAccessory as $item) {
$result[] = [
'url' => $router->generate('shop_accessory_page', ['workId' => $item->getId()]),
'priority' => '0.6',
'changefreq' => 'daily',
];
}
$response = $this->render('@DcSite/sitemap.xml.twig', [
'urls' => $result,
'route' => $request->get('_route')
]);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
public function shopImagesSiteMap(Request $request, AccessoryShopService $accessoryShopService, ImageProviderVidi $imageProviderVidi): Response
{
$result = [];
$accessories = $accessoryShopService->getAccessoryByDealer($this->getDealer());
foreach ($accessories as $accessory) {
if (!$accessory['gallery']) {
continue;
}
if (count($accessory['gallery']->getGalleryItems()) == 0) {
continue;
}
$mediaPaths = [];
$galleryItems = $accessory['gallery']->getGalleryItems();
foreach ($galleryItems as $galleryItem) {
$mediaPaths[] = $request->getHost() . '/uploads/media/' . $imageProviderVidi->generatePath($galleryItem->getMedia()) .
'/' . $galleryItem->getMedia()->getProviderReference();
}
$result[] = [
'accessoryUrl' => $request->getHost() . '/product/' . $accessory['id'] . '.html',
'mediaPath' => $mediaPaths
];
}
$response = $this->render(
'@DcSite/sitemap-images.xml.twig',
['result' => $result]
);
$response->headers->set('Content-Type', 'application/xml');
$response->setCharset('utf-8');
return $response;
}
}