- <?php
- namespace PortalBundle\Controller;
- use BmpGatewayBundle\Entity\VehicleTestDrive;
- use CoreBundle\Component\CoreFormFactory;
- use CoreBundle\Component\FormManager;
- use CoreBundle\Entity\BodyRepairCategory;
- use CoreBundle\Entity\Brand;
- use CoreBundle\Entity\Dealer;
- use CoreBundle\Entity\Forms;
- use CoreBundle\Entity\Model;
- use CoreBundle\Entity\Post;
- use CoreBundle\Entity\ServicePage;
- use CoreBundle\Entity\ServicePageCategory;
- use CoreBundle\Entity\Vehicles\InStock;
- use CoreBundle\Entity\Vehicles\Vehicle;
- use CoreBundle\Entity\ViDiDepartment;
- use CoreBundle\Model\Vehicles\Repository;
- use CoreBundle\Model\Vehicles\VehicleType;
- use CoreBundle\Model\ViDiDepartmentModel;
- use CoreBundle\Model\ViDiWorkerModel;
- use CoreBundle\Services\MediaExtensionVidi;
- use DateTime;
- use DcSiteBundle\Entity\ServiceWork;
- use DcSiteBundle\Entity\ServiceWorkGroup;
- use DcSiteBundle\Entity\ServiceWorkJob;
- use DcSiteBundle\Entity\WorkGroupRelation;
- use DcSiteBundle\Model\Form\ServiceForm;
- use DcSiteBundle\Repository\ServiceWorkGroupRepository;
- use Doctrine\ORM\EntityManagerInterface;
- use PortalBundle\Entity\Blog;
- use PortalBundle\Entity\BlogCategory;
- use PortalBundle\Enums\VehicleTypeEnum;
- use PortalBundle\Model\SeoMetaTag;
- use PortalBundle\Services\MainService;
- use PortalBundle\Services\ServiceService;
- use Symfony\Component\HttpFoundation\JsonResponse;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\RequestStack;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
- use Symfony\Component\Routing\RouterInterface;
- use Symfony\Contracts\Translation\TranslatorInterface;
- class ServiceController extends BaseController
- {
-     const BODY_REPAIR_UNIQUE_ID = 'BODY_SERVICE';
-     private SeoMetaTag $seoMetaTag;
-     public function __construct(CoreFormFactory $coreFormFactory, RequestStack $requestStack, RouterInterface $router,
-                                 Repository      $vehicleRepository, ServiceService $serviceService, SeoMetaTag $seoMetaTag)
-     {
-         parent::__construct($coreFormFactory, $requestStack, $router, $vehicleRepository, $serviceService);
-         $this->seoMetaTag = $seoMetaTag;
-     }
-     protected function serviceRender($view, array $parameters = [], Response $response = null): Response
-     {
-         $request = $this->requestStack->getCurrentRequest();
-         $subdomain = explode('.', $request->server->get('HTTP_HOST'))[0];
-         $isSubdomainShop = $subdomain === "shop";
-         $seoMeta = $this->seoMetaTag->getSeoMeta($request);
-         $compareCookie = $request->cookies->get('compare');
-         $countCompare = ($compareCookie) ? count(explode(',', $compareCookie)) : '';
-         $parameters = array_merge($parameters, [
-             'backLoginUrl' => $request->getUri(),
-             'countCompare' => $countCompare,
-             'seoMeta' => $seoMeta,
-             'privacyUrl' => $this->router->generate('portal_privacy_policy'),
-             'isSubdomainShop' => $isSubdomainShop
-         ]);
-         if (isset($parameters['forms'])) {
-             $parameters['forms'] = array_merge($parameters['forms'], $this->buildForms());
-         } else {
-             $parameters = array_merge($parameters, ['forms' => $this->buildForms()]);
-         }
-         $brandsItem = $this->vehicleRepository->getAvailBrands(true, 0, VehicleType::DEFAULT_TYPE);
-         foreach ($brandsItem as $row) {
-             if (!$row['url']) {
-                 continue;
-             }
-             $brands[] = [
-                 'name' => $row['name'],
-                 'url' => $this->router->generate('portal_new_catalog_b', ['brand' => $row['url'], 'state' => 'new', 'type' => 'car'])
-             ];
-         }
-         $vehicleType = new VehicleType();
-         $parameters = array_merge($parameters, ['globalBrands' => $brands, 'vehicleType' => $vehicleType]);
-         if (null === $response) {
-             $response = new Response();
-         }
-         $defaultType = VehicleType::getTypeDataById(VehicleType::DEFAULT_TYPE);
-         $catalogUrl = $this->router->generate('portal_new_catalog_b', ['state' => 'new', 'type' => $defaultType['url'], 'brand' => 'all']);
-         $parameters['catalogUrl'] = $catalogUrl;
-         return parent::basePortalRender($view, $parameters, $response);
-     }
-     public function to(Request $request, EntityManagerInterface $em)
-     {
-         $brands = $em->getRepository(Brand::class)->getBrandsHasRegulation();
-         return $this->serviceRender('@Portal/Service/to.html.twig', [
-             'serviceForm' => $this->CoreFormFactory()->serviceForm(null, false, ServiceForm::TO_SERVICE_TYPE)->createView(),
-             'serviceBrands' => $brands,
-         ]);
-     }
-     public function toBrand(Request $request, EntityManagerInterface $em): Response
-     {
-         $brandUrl = $request->get('brand');
-         $brand = $em->getRepository(Brand::class)->getBrandByUrl($brandUrl);
-         if (!$brand) {
-             throw new NotFoundHttpException();
-         }
-         $models = $em->getRepository(\CoreBundle\Entity\Model::class)->getModelsHasRegulationByBrand($brand->getId());
-         return $this->serviceRender('@Portal/Service/to.html.twig', [
-             'serviceForm' => $this->CoreFormFactory()->serviceForm(null, false, ServiceForm::TO_SERVICE_TYPE)->createView(),
-             'brand' => $brand,
-             'serviceModels' => $models,
-         ]);
-     }
-     public function toModel(Request $request, EntityManagerInterface $em): Response
-     {
-         $brandUrl = $request->get('brand');
-         $modelUrl = $request->get('model');
-         $brand = $em->getRepository(Brand::class)->getBrandByUrl($brandUrl);
-         if (!$brand) {
-             throw new NotFoundHttpException();
-         }
-         $model = $em->getRepository(\CoreBundle\Entity\Model::class)->findOneByUrl($modelUrl, $brand);
-         if (!$model) {
-             throw new NotFoundHttpException();
-         }
-         $models = $em->getRepository(\CoreBundle\Entity\Model::class)->getModelsHasRegulationByBrand($brand->getId());
-         return $this->serviceRender('@Portal/Service/to.html.twig', [
-             'serviceForm' => $this->CoreFormFactory()->serviceForm(null, false, ServiceForm::TO_SERVICE_TYPE)->createView(),
-             'brand' => $brand,
-             'model' => $model,
-             'serviceModels' => $models,
-         ]);
-     }
-     public function bodyRepair(Request $request, EntityManagerInterface $em): Response
-     {
-         $repoCategories = $em->getRepository(BodyRepairCategory::class)->findBy(['state' => true, 'parent_category' => null], ['position' => 'ASC']);
-         $repairCategory = [];
-         $dealer = $em->getRepository(Dealer::class)->findOneBy(['unique_id' => self::BODY_REPAIR_UNIQUE_ID]);
-         $serviceActions = $em->getRepository(Post::class)->getActionsService($dealer, 0, true);
-         /** @var BodyRepairCategory $category */
-         foreach ($repoCategories as $category) {
-             if (!isset($repairCategory[$category->getId()])) {
-                 $repairCategory[$category->getId()] = [
-                     'category' => $category,
-                     'subCategories' => []
-                 ];
-             }
-             /** @var BodyRepairCategory $childCategory */
-             foreach ($category->getChildCategory() as $childCategory) {
-                 if (!$childCategory->getState()) {
-                     continue;
-                 }
-                 $repairCategory[$category->getId()]['subCategories'][$childCategory->getId()] = [
-                     'category' => $childCategory,
-                     'position' => $childCategory->getPosition(),
-                 ];
-             }
-         }
-         return $this->serviceRender('@Portal/Service/body-repair.html.twig', [
-             'dealer' => $dealer,
-             'serviceActions' => $serviceActions,
-             'repairCategory' => $repairCategory,
-             'repairPhotoForm' => $this->CoreFormFactory()->repairPhotoForm()->createView(),
-         ]);
-     }
-     public function bodyRepairCategory(Request $request, EntityManagerInterface $em): Response
-     {
-         $categoryUrl = $request->get('category');
-         $category = $em->getRepository(BodyRepairCategory::class)->findOneBy(['state' => true, 'url' => $categoryUrl]);
-         $dealer = $em->getRepository(Dealer::class)->findOneBy(['unique_id' => self::BODY_REPAIR_UNIQUE_ID]);
-         $serviceActions = $em->getRepository(Post::class)->getActionsService($dealer, 0, true);
-         if (!$category) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $subCategories = [];
-         /** @var BodyRepairCategory $item */
-         foreach ($category->getChildCategory() as $item) {
-             if (!$item->getState()) {
-                 continue;
-             }
-             $subCategories[] = $item;
-         }
-         return $this->serviceRender('@Portal/Service/body-repair-category.html.twig', [
-             'dealer' => $dealer,
-             'serviceActions' => $serviceActions,
-             'category' => $category,
-             'subCategories' => $subCategories,
-             'repairPhotoForm' => $this->CoreFormFactory()->repairPhotoForm()->createView(),
-         ]);
-     }
-     public function bodyRepairSubCategory(Request $request, EntityManagerInterface $em): Response
-     {
-         $categoryUrl = $request->get('category');
-         $subCategoryUrl = $request->get('subCategory');
-         $category = $em->getRepository(BodyRepairCategory::class)->findOneBy(['state' => true, 'url' => $categoryUrl]);
-         if (!$category) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $subCategory = $em->getRepository(BodyRepairCategory::class)->findOneBy(['state' => true, 'url' => $subCategoryUrl]);
-         if (!$subCategory) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $dealer = $em->getRepository(Dealer::class)->findOneBy(['unique_id' => self::BODY_REPAIR_UNIQUE_ID]);
-         $serviceActions = $em->getRepository(Post::class)->getActionsService($dealer, 0, true);
-         $brands = $em->getRepository(Brand::class)->getAvailBrandsInstance();
-         return $this->serviceRender('@Portal/Service/body-repair-sub-category.html.twig', [
-             'dealer' => $dealer,
-             'brands' => $brands,
-             'serviceActions' => $serviceActions,
-             'subCategory' => $subCategory,
-             'repairPhotoForm' => $this->CoreFormFactory()->repairPhotoForm()->createView(),
-         ]);
-     }
-     public function accessories(EntityManagerInterface $em): Response
-     {
-         $service = $em->getRepository(Post::class)->getServiceActions(3);
-         return $this->serviceRender('@Portal/Service/accessories.html.twig', [
-             'buyPartsForm' => $this->CoreFormFactory()->buyPartsForm()->createView(),
-             'serviceActions' => $service,
-         ]);
-     }
-     public function parts(Request $request, MainService $mainService): Response
-     {
-         $mainService->setLang($request->getLocale());
-         $brands = $mainService->getBrands([26, 31]);
-         $routeMap = [
-             1 => 'ford_service_spares',
-             2 => 'toyota_service_spares',
-             4 => 'mazda_service_parts',
-             5 => 'lexus_service_spare_parts',
-             6 => 'infiniti_homepage',
-             8 => 'landrover_service_spare_parts',
-             10 => 'honda_homepage',
-             11 => 'peugeot_service_parts',
-             12 => 'nissan_service_accessories',
-             15 => 'citroen_service_parts',
-             16 => 'opel_service_spare_parts',
-             17 => 'yamaha_service_spare_parts',
-             23 => 'suzuki_service_parts',
-             24 => 'subaru_service_spare_parts',
-             42 => 'jeep_service_parts',
-             43 => 'mg_service_spare_parts'
-         ];
-         $filteredBrands = array_values(array_filter(array_map(function ($brand) use ($routeMap) {
-             if (isset($routeMap[$brand['id']])) {
-                 $brand['parts_route'] = $routeMap[$brand['id']];
-                 return $brand;
-             }
-             return null;
-         }, $brands)));
-         return $this->serviceRender('@Portal/Service/parts.html.twig', [
-             'brands' => $filteredBrands,
-         ]);
-     }
-     public function tiresHotel(Request $request, EntityManagerInterface $em): Response
-     {
-         $repository = $em->getRepository(ServiceWorkGroup::class);
-         $locale = $request->getLocale();
-         $mainCategories = $repository
-             ->getTearHotel([
-                 ServiceWorkGroupRepository::UID_TEAR_STORAGE
-             ]);
-         $additionCategories = $repository->getTireHotelAdditionCategories();
-         $mainCategories = array_merge($mainCategories, $additionCategories);
-         $regulationDealers = $this->serviceService->getRegulationDealers($locale);
-         $dealers = [];
-         foreach ($regulationDealers as $dealer) {
-             if ($dealer['id'] != 7) {
-                 $dealers[$dealer['id']] = $dealer['title'];
-             }
-         }
-         return $this->serviceRender('@Portal/Service/tires-hotel.html.twig', [
-             'mainCategories' => $mainCategories,
-             'additionCategories' => $additionCategories,
-             'callMeForm' => $this->CoreFormFactory()
-                 ->callMeForm(new Forms(), true)
-                 ->createView(),
-             'tiresHotelForm' => $this->CoreFormFactory()
-                 ->tiresHotelForm(new Forms(), $dealers)
-                 ->createView()
-         ]);
-     }
-     public function carRepair(Request $request, EntityManagerInterface $em, \CoreBundle\Model\Service\ServiceWork $serviceWork): Response
-     {
-         $locale = $request->getLocale();
-         $service = $em->getRepository(Post::class)->getServiceActions(3);
-         $mainService = $serviceWork->getMainService();
-         $categories = $em->getRepository(ServiceWorkGroup::class)->getServiceGroupByParent($mainService);
-         $servicesCategory = [];
-         foreach ($categories as $category) {
-             $childCategories = $em->getRepository(ServiceWorkGroup::class)->getServiceGroupByParent($category);
-             if ($childCategories) {
-                 if (!isset($servicesCategory[$category->getId()])) {
-                     $servicesCategory[$category->getId()] = [
-                         'category' => $category,
-                         'subCategory' => []
-                     ];
-                 }
-                 foreach ($childCategories as $childCategory) {
-                     $servicesCategory[$category->getId()]['subCategory'][$childCategory->getId()] = [
-                         'category' => $childCategory,
-                         'position' => $childCategory->getPosition(),
-                     ];
-                 }
-                 usort($servicesCategory[$category->getId()]['subCategory'], fn($a, $b) => $a['position'] <=> $b['position']);
-             }
-         }
-         $regulationDealers = $this->serviceService->getRegulationDealers($locale);
-         //unset Toyota Palmira
-         foreach ($regulationDealers as $key => $dealer) {
-             if ($dealer['id'] == 7) {
-                 unset($regulationDealers[$key]);
-                 $regulationDealers = array_values($regulationDealers);
-             }
-         }
-         return $this->serviceRender('@Portal/Service/car-repair.html.twig', [
-             'serviceForm' => $this->CoreFormFactory()->serviceForm(null, false, ServiceForm::BROKE_SERVICE_TYPE)->createView(),
-             'serviceActions' => $service,
-             'servicesCategory' => $servicesCategory,
-             'regulationDealers' => $regulationDealers,
-             'isModalForm' => ($request->attributes->get('_route') == 'portal_service_active')
-         ]);
-     }
-     public function servicePageContentDealer(Request $request, EntityManagerInterface $em, ViDiWorkerModel $viDiWorkerModel): Response
-     {
-         $requestCategory = $request->get('category');
-         $requestService = $request->get('service');
-         $requestDealer = $request->get('dealer');
-         $serviceActions = $em->getRepository(Post::class)->getServiceActions(3);
-         $category = $em->getRepository(ServicePageCategory::class)->findOneBy(['url' => $requestCategory, 'state' => true]);
-         if (!$category) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $service = $em->getRepository(ServicePageCategory::class)->findOneBy(['url' => $requestService]);
-         if (!$service) {
-             throw $this->createNotFoundException('service not exists');
-         }
-         $dealer = $em->getRepository(Dealer::class)->findOneBy(['url' => $requestDealer]);
-         if (!$dealer) {
-             throw $this->createNotFoundException('dealer not exists');
-         }
-         $dealerModeOperation = false;
-         $openTime = preg_replace("/[^0-9]/", '', $dealer->getOpenTime());
-         $closeTime = preg_replace("/[^0-9]/", '', $dealer->getCloseTime());
-         ($openTime < date("Hi") && $closeTime > date("Hi")) ? $dealerModeOperation = true : $dealerModeOperation = false;
-         $department = $em->getRepository(ViDiDepartment::class)
-             ->findOneBy(['dealer' => $dealer, 'type' => ViDiDepartmentModel::DEPARTMENT_TYPE_SERVICE]);
-         $workers = $viDiWorkerModel->getAllByDealer($dealer, $request->getLocale());
-         foreach ($workers as $key => $value) {
-             if ($value['department']->getType() != 2) {
-                 unset($workers[$key]);
-             }
-         }
-         $pages = $em->getRepository(ServicePage::class)->getByCategory($service, $dealer);
-         /** @var ServicePage $page */
-         $jobIds = array_column($pages, 'id');
-         $facilities = explode(', ', $dealer->getFacilities());
-         $serviceWorks = $em->getRepository(ServiceWork::class)->getByJobIds($jobIds, $dealer);
-         $price_jobs = [];
-         $hour_jobs = [];
-         $price_parts = [];
-         $jobsType = [
-             'jobs' => [],
-             'jobsRegulations' => [],
-             'jobsModels' => []
-         ];
-         /** @var ServiceWork $serviceWork */
-         foreach ($serviceWorks as $serviceWork) {
-             if (!isset($price_jobs[$serviceWork->getId()])) {
-                 $price_jobs[$serviceWork->getId()] = 0;
-             }
-             if (!isset($price_parts[$serviceWork->getId()])) {
-                 $price_parts[$serviceWork->getId()] = 0;
-             }
-             if (!isset($hour_jobs[$serviceWork->getId()])) {
-                 $hour_jobs[$serviceWork->getId()] = 0;
-             }
-             foreach ($serviceWork->getJobs() as $job) {
-                 $price_jobs[$serviceWork->getId()] += $job->getPrice();
-                 $hour_jobs[$serviceWork->getId()] += $job->getJobHours();
-             }
-             foreach ($serviceWork->getParts() as $part) {
-                 $price_parts[$serviceWork->getId()] += $part->getCount() * $part->getPart()->getPrice();
-             }
-             $serviceJobIds = [];
-             /** @var ServiceWorkJob $serviceWorkJob */
-             foreach ($serviceWork->getJobs() as $serviceWorkJob) {
-                 $serviceJobIds[$serviceWorkJob->getJob()->getId()] = $serviceWorkJob->getJob()->getNameByLocale($request->getLocale());
-             }
-             $jobIdIntersect = array_intersect(array_keys($serviceJobIds), $jobIds);
-             if (!$jobIdIntersect) {
-                 continue;
-             }
-             $currentJobId = array_shift($jobIdIntersect);
-             if (is_null($serviceWork->getVariation())) {
-                 if (!isset($jobsType['jobs'][$serviceWork->getId()])) {
-                     $jobsType['jobs'][$serviceWork->getId()] = [
-                         'title' => $serviceWork->getTitle($request->getLocale()),
-                         'service_work' => [],
-                     ];
-                 }
-                 $jobsType['jobs'][$serviceWork->getId()]['service_work'] = [
-                     'regulation_id' => $serviceWork->getId(),
-                     'jobs' => $serviceWork->getJobs(),
-                     'parts' => $serviceWork->getParts(),
-                     'hours' => $hour_jobs[$serviceWork->getId()],
-                     'price_service' => round($price_jobs[$serviceWork->getId()] + $price_parts[$serviceWork->getId()])
-                 ];
-             } elseif ($serviceWork->getIsRegulations() == 1) {
-                 $modelId = $serviceWork->getVariation()->getModel()->getId();
-                 $currentJobId = $serviceWork->getMileage();
-                 if (!isset($jobsType['jobsRegulations'][$serviceWork->getMileage()])) {
-                     $jobsType['jobsRegulations'][$serviceWork->getMileage()] = [
-                         'title' => $serviceWork->getMileage(),
-                         'models' => [],
-                     ];
-                 }
-                 if (!isset($jobsType['jobsRegulations'][$serviceWork->getMileage()]['models'][$modelId])) {
-                     $jobsType['jobsRegulations'][$serviceWork->getMileage()]['models'][$modelId] = [
-                         'title' => $serviceWork->getVariation()->getModel()->getTitle(),
-                         'model' => $serviceWork->getVariation()->getModel()->getTitle(),
-                         'service_work' => [],
-                     ];
-                 }
-                 $jobsType['jobsRegulations'][$serviceWork->getMileage()]['models'][$modelId]['service_work'][$serviceWork->getId()] = [
-                     'variation_id' => $serviceWork->getVariation()->getId(),
-                     'regulation_id' => $serviceWork->getId(),
-                     'hours' => $hour_jobs[$serviceWork->getId()],
-                     'jobs' => $serviceWork->getJobs(),
-                     'parts' => $serviceWork->getParts(),
-                     'model' => $serviceWork->getVariation()->getModel()->getTitle(),
-                     'year' => $serviceWork->getVariation()->getYearFrom() . '-' . $serviceWork->getVariation()->getYearTo(),
-                     'engine' => $serviceWork->getVariation()->getFuelType()->getValue($request->getLocale()) . ' ' . number_format($serviceWork->getVariation()->getEngineVolume() / 1000, 1, '.', ''),
-                     'transmission' => $serviceWork->getVariation()->getTransmissionType() . ' ' . $serviceWork->getVariation()->getTransmissionStepCount(),
-                     'driveUnit' => $serviceWork->getVariation()->getDriveUnit()->getShort($request->getLocale()),
-                     'price_service' => round($price_jobs[$serviceWork->getId()] + $price_parts[$serviceWork->getId()])
-                 ];
-             } else {
-                 $Variation = $serviceWork->getVariation();
-                 $modelId = $Variation->getModel()->getId();
-                 if (!isset($jobsType['jobsModels'][$currentJobId])) {
-                     $jobsType['jobsModels'][$currentJobId] = [
-                         'title' => $serviceWork->getTitle($request->getLocale()),
-                         'models' => [],
-                     ];
-                 }
-                 if (!isset($jobsType['jobsModels'][$currentJobId]['models'][$modelId])) {
-                     $jobsType['jobsModels'][$currentJobId]['models'][$modelId] = [
-                         'title' => $Variation->getModel()->getTitle(),
-                         'service_work' => [],
-                     ];
-                 }
-                 $service_work = [
-                     'variation_id' => $Variation->getId(),
-                     'regulation_id' => $serviceWork->getId(),
-                     'hours' => $hour_jobs[$serviceWork->getId()],
-                     'jobs' => $serviceWork->getJobs(),
-                     'parts' => $serviceWork->getParts(),
-                     'model' => $Variation->getModel()->getTitle(),
-                     'year' => $Variation->getYearFrom() . '-' . $Variation->getYearTo(),
-                     'engine' => '',
-                     'transmission' => $Variation->getTransmissionType() . ' ' . $Variation->getTransmissionStepCount(),
-                     'driveUnit' => $Variation->getDriveUnit() ? $Variation->getDriveUnit()->getId() : null,
-                     'price_service' => round($price_jobs[$serviceWork->getId()] + $price_parts[$serviceWork->getId()])
-                 ];
-                 if (!is_null($Variation->getFuelType())) {
-                     $service_work['engine'] = $Variation->getFuelType()->getValue($request->getLocale()) . ' ' . number_format($Variation->getEngineVolume() / 1000, 1, '.', '');
-                 }
-                 $jobsType['jobsModels'][$currentJobId]['models'][$modelId]['service_work'][$serviceWork->getId()] = $service_work;
-             }
-         }
-         return $this->serviceRender('@Portal/Service/service-page-content-dealer.html.twig', [
-             'serviceForm' => $this->CoreFormFactory()->serviceForm(null, false, ServiceForm::BROKE_SERVICE_TYPE)->createView(),
-             'serviceActions' => $serviceActions,
-             'category' => $category,
-             'service' => $service,
-             'dealerModeOperation' => $dealerModeOperation,
-             'dealerFacilities' => $facilities,
-             'dealer' => $dealer,
-             'department' => $department,
-             'workers' => $workers,
-             'jobsType' => $jobsType,
-         ]);
-     }
-     public static $parts;
-     public function savePopupFormBodyRepair(Request $request, EntityManagerInterface $em): JsonResponse
-     {
-         $dealer = $em->getRepository(Dealer::class)->find(['id' => 41]);
-         $popupForm = new Forms();
-         $popupForm->setDateCreate(new DateTime());
-         $popupForm->setType(FormManager::TYPE_REPAIR_CALC);
-         $popupForm->setName($request->request->get('name'));
-         $popupForm->setPhone($request->request->get('phone'));
-         $popupForm->setUtm($request->request->get('utm'));
-         $popupForm->setDomain($request->getHost());
-         $params = json_encode([
-             'comment' => $request->request->get('comment'),
-         ]);
-         $popupForm->setData($params);
-         $popupForm->setDealer($dealer);
-         $em->persist($popupForm);
-         $em->flush();
-         return new JsonResponse(['success' => true]);
-     }
-     public function initRepairCalc(Request $request, TranslatorInterface $translator): JsonResponse
-     {
-         return new JsonResponse([
-             1 => [
-                 'title' => $translator->trans('service.body_repair.calc.front_bumper', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             2 => [
-                 'title' => $translator->trans('service.body_repair.calc.front_left_fender', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             3 => [
-                 'title' => $translator->trans('service.body_repair.calc.front_right_fender', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             4 => [
-                 'title' => $translator->trans('service.body_repair.calc.hood', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             5 => [
-                 'title' => $translator->trans('service.body_repair.calc.left_front_door', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             6 => [
-                 'title' => $translator->trans('service.body_repair.calc.left_back_door', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             7 => [
-                 'title' => $translator->trans('service.body_repair.calc.roof', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             8 => [
-                 'title' => $translator->trans('service.body_repair.calc.right_front_door', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             9 => [
-                 'title' => $translator->trans('service.body_repair.calc.right_back_door', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             10 => [
-                 'title' => $translator->trans('service.body_repair.calc.trunk', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             11 => [
-                 'title' => $translator->trans('service.body_repair.calc.back_left_fender', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             12 => [
-                 'title' => $translator->trans('service.body_repair.calc.back_right_fender', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-             13 => [
-                 'title' => $translator->trans('service.body_repair.calc.back_bumper', [], 'portal_base'),
-                 'price' => [
-                     'sedan' => 4900,
-                     'suv' => 5900,
-                     'pickup' => 5400,
-                 ]
-             ],
-         ]);
-     }
-     public function saveLeadAccessory(Request $request, FormManager $formManager, EntityManagerInterface $em): JsonResponse
-     {
-         if (!$dealer = $request->get('buy_parts')['dealer']) {
-             return $this->json(['success' => false]);
-         }
-         $dealer = $em->getRepository(Dealer::class)->find($dealer);
-         if (!$dealer) {
-             return $this->json(['success' => false]);
-         }
-         return $formManager->saveBuyPartsForm($request, $dealer);
-     }
-     public function serviceInit(Request $request, MediaExtensionVidi $mediaExtensionVidi): JsonResponse
-     {
-         $brands = $this->vehicleRepository->getAvailBrandsInstance($request->getLocale());
-         foreach ($brands as &$brand) {
-             $brand['image'] = $mediaExtensionVidi->getPath($brand['image'], 'menu');
-         }
-         return new JsonResponse(['success' => true, 'brands' => $brands]);
-     }
-     public function serviceFormSave(Request $request, FormManager $formManager): JsonResponse
-     {
-         return $formManager->saveServiceForm($request);
-     }
-     public function accessoriesTest(Request $request): Response
-     {
-         return $this->serviceRender('@Portal/Service/accessories-test.html.twig');
-     }
-     public function byDealer(EntityManagerInterface $em): Response
-     {
-         return $this->serviceRender('@Portal/Service/by-dealer.html.twig', [
-             'serviceActions' => $em->getRepository(Post::class)->getServiceActions(3),
-         ]);
-     }
-     public function byDealer2(EntityManagerInterface $em): Response
-     {
-         return $this->serviceRender('@Portal/Service/by-dealer2.html.twig', [
-             'serviceActions' => $em->getRepository(Post::class)->getServiceActions(3),
-         ]);
-     }
-     public function byDealer3(EntityManagerInterface $em): Response
-     {
-         return $this->serviceRender('@Portal/Service/by-dealer3.html.twig', [
-             'serviceActions' => $em->getRepository(Post::class)->getServiceActions(3),
-         ]);
-     }
-     public function byDealer4(EntityManagerInterface $em): Response
-     {
-         return $this->serviceRender('@Portal/Service/by-dealer4.html.twig', [
-             'serviceActions' => $em->getRepository(Post::class)->getServiceActions(3),
-         ]);
-     }
-     public function multiConsultationForm(): Response
-     {
-         return $this->serviceRender('@Portal/Service/consultation-form.html.twig');
-     }
-     public function multiConsultationFormOnline(): Response
-     {
-         return $this->serviceRender('@Portal/Service/consultation-form-online.html.twig');
-     }
-     public function multiConsultationTestdriveForm(Request $request, EntityManagerInterface $em, $url = null)
-     {
-         $dealerId = null;
-         $carId = null;
-         if ($url) {
-             /** @var Vehicle $vehicle */
-             if ($request->get('type') == VehicleTypeEnum::IN_STOCK) {
-                 $vehicleInStock = $em->getRepository(InStock::class)
-                     ->findOneBy(['url' => $url]);
-                 $vehicle = $vehicleInStock && $vehicleInStock->getVehicleItem() ? $vehicleInStock->getVehicleItem()->getVehicle() : null;
-             } else {
-                 $vehicle = $em->getRepository(Vehicle::class)->findOneBy(['url' => $url]);
-             }
-             if (!$vehicle || !$vehicle->getTestDrive()) {
-                 return $this->redirectToRoute('portal_service_testdrive_form');
-             }
-             $tdVehicle = $em->getRepository(VehicleTestDrive::class)->findOneBy(['vehicle' => $vehicle, 'state' => 1]);
-             if (!$tdVehicle) {
-                 return $this->redirectToRoute('portal_service_testdrive_form');
-             }
-             $dealerId = $vehicle->getDealer()->getId();
-             $carId = $tdVehicle->getId();
-         }
-         return $this->serviceRender('@Portal/Service/consultation-testdrive-form.html.twig', ['dealerId' => $dealerId, 'carId' => $carId]);
-     }
-     public function nightBookingService(): Response
-     {
-         return $this->serviceRender('@Portal/Service/night-booking.html.twig');
-     }
-     public function nightServiceAgreement(Request $request, EntityManagerInterface $em): Response
-     {
-         $dealerUrl = $request->get('dealerUrl');
-         $dealer = $em->getRepository(Dealer::class)->findOneBy(['url' => $dealerUrl]);
-         return $this->serviceRender('@Portal/Service/night-service-agreement.html.twig', [
-             'dealer' => $dealer
-         ]);
-     }
-     public function service(Request $request, EntityManagerInterface $em, \CoreBundle\Model\Service\ServiceWork $serviceWork): Response
-     {
-         $locale = $request->getLocale();
-         $regulationBrands = $em->getRepository(Brand::class)->getBrandsHasRegulation();
-         $regulationDealers = $this->serviceService->getRegulationDealers($locale);
-         $technicalDiscussion = $em->getRepository(ServiceWorkGroup::class)->getHeirMainGroup('eb2b75ea-4a5d-11ef-ac14-005056a799b6', 5);
-         $autoRepair = $em->getRepository(ServiceWorkGroup::class)->getHeirMainGroup('c5b44242-3390-11ef-818b-005056a7775d', 5);
-         $bodyRepair = $em->getRepository(ServiceWorkGroup::class)->getHeirMainGroup('c5b44243-3390-11ef-818b-005056a7775d', 5);
-         //unset Toyota Palmira
-         foreach ($regulationDealers as $key => $dealer) {
-             if ($dealer['id'] == 7) {
-                 unset($regulationDealers[$key]);
-                 $regulationDealers = array_values($regulationDealers);
-             }
-         }
-         $generalGroup = $serviceWork->getMainService();
-         $subGeneralGroups = $em->getRepository(ServiceWorkGroup::class)->getServiceGroupByParent($generalGroup);
-         $maintenanceGroup = $em->getRepository(ServiceWorkGroup::class)->find(7294);
-         $subMaintenanceGroups = $em->getRepository(ServiceWorkGroup::class)->getServiceGroupByParent($maintenanceGroup);
-         $subGeneralGroups = array_filter($subGeneralGroups, fn($group) => $group->getId() !== 7294);
-         usort($subGeneralGroups, fn($a, $b) => $a->getPosition() <=> $b->getPosition());
-         $dealerId = null;
-         if ($request->query->get('dealerId')) {
-             $dealerId = $request->query->get('dealerId');
-         }
-         return $this->serviceRender('@Portal/Service/service.html.twig', [
-             'regulationBrands' => $regulationBrands,
-             'regulationDealers' => $regulationDealers,
-             'technicalDiscussion' => $technicalDiscussion,
-             'subGeneralGroups' => $subGeneralGroups,
-             'maintenanceGroup' => $maintenanceGroup,
-             'subMaintenanceGroups' => $subMaintenanceGroups,
-             'autoRepair' => $autoRepair,
-             'bodyRepair' => $bodyRepair,
-             'isModalForm' => ($request->get('_route') == 'portal_service_active'),
-             'dealerId' => $dealerId
-         ]);
-     }
-     public function servicePageWorkGroupBrand(Request            $request, EntityManagerInterface $em, \CoreBundle\Model\Service\ServiceWork $serviceWork,
-                                               MediaExtensionVidi $mediaExtensionVidi): Response
-     {
-         $locale = $request->getLocale();
-         $requestWorkGroup = $request->get('work_group');
-         $requestBrand = $request->get('brand');
-         $workGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $requestWorkGroup]);
-         if (!$workGroup) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $brand = $em->getRepository(Brand::class)->findOneBy(['url' => $requestBrand]);
-         $models = $serviceWork->getModelsByGroupAndBrand($workGroup, $brand);
-         $services = $serviceWork->getSubGroupsByBrand($workGroup, $brand);
-         $dealers = $this->serviceService->getRegulationServicesByBrand($brand, $locale);
-         $modifyModelsData = [];
-         foreach ($models as $model) {
-             $modifyModelsData[] = [
-                 'id' => $model->getId(),
-                 'title' => $model->getBrand()->getName() . ' ' . $model->getTitle(),
-                 'url' => $model->getUrl(),
-                 'img' => $mediaExtensionVidi->getPath($model->getImage(), 'reference')
-             ];
-         }
-         $minPrice = $em->getRepository(WorkGroupRelation::class)->getJobMinPriceByGroupBrand($workGroup, $brand);
-         $minWorkTime = $em->getRepository(WorkGroupRelation::class)->getJobMinTimeByGroup($workGroup);
-         return $this->serviceRender('@Portal/Service/work-group-brand-service.html.twig', [
-             'workGroup' => $workGroup,
-             'services' => $services,
-             'models' => $modifyModelsData,
-             'minPrice' => round($minPrice),
-             'minWorkTime' => $minWorkTime,
-             'brand' => $brand,
-             'dealers' => $dealers,
-             'isModalForm' => ($request->attributes->get('_route') == 'portal_service_active')
-         ]);
-     }
-     public function servicePageSubWorkGroup(Request $request, EntityManagerInterface $em, \CoreBundle\Model\Service\ServiceWork $serviceWork): Response
-     {
-         $requestWorkGroup = $request->get('work_group');
-         $requestSubWorkGroup = $request->get('sub_group');
-         $workGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $requestWorkGroup]);
-         $subWorkGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $requestSubWorkGroup]);
-         $minPrice = $em->getRepository(WorkGroupRelation::class)->getJobMInPriceByGroup($subWorkGroup);
-         $minWorkTime = $em->getRepository(WorkGroupRelation::class)->getJobMinTimeByGroup($subWorkGroup);
-         if (!$workGroup) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $mainGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $requestWorkGroup]);
-         $subGroups = $em->getRepository(ServiceWorkGroup::class)->getServiceGroupByParent($mainGroup);
-         $anotherGroups = [];
-         foreach ($subGroups as $group) {
-             if ($group->getId() != $workGroup->getId()) {
-                 $anotherGroups[] = [
-                     'title' => $group->getTitle($request->getLocale()),
-                     'id' => $group->getId(),
-                     'price' => $em->getRepository(WorkGroupRelation::class)->getJobMinPriceByGroup($group)
-                 ];
-             }
-         }
-         $regulationDealers = $this->serviceService->getRegulationDealers($request->getLocale());
-         $brandDealerId = null;
-         $requestBrand = $request->get('brand');
-         $brand = $em->getRepository(Brand::class)->findOneBy(['url' => $requestBrand]);
-         if ($brand) {
-             $brandDealerId = $brand->getDealer()->first()->getId();
-         }
-         $brands = $serviceWork->getGroupBrands($workGroup);
-         foreach ($regulationDealers as $key => $dealer) {
-             if ($dealer['id'] == 7) {
-                 unset($regulationDealers[$key]);
-                 $regulationDealers = array_values($regulationDealers);
-             }
-         }
-         $services = [];
-         $selectService = '';
-         foreach ($regulationDealers as $dealer) {
-             if (isset($brandDealerId) && $dealer['id'] == $brandDealerId) {
-                 $selectService = $dealer['title'];
-             }
-             $services[$dealer['id']] = $dealer['title'];
-         }
-         return $this->serviceRender('@Portal/Service/sub-work-group-page.html.twig', [
-             'workGroup' => $workGroup,
-             'anotherGroups' => $anotherGroups,
-             'subWorkGroup' => $subWorkGroup,
-             'minPrice' => $minPrice,
-             'brands' => $brands,
-             'minWorkTime' => $minWorkTime,
-             'isModalForm' => ($request->attributes->get('_route') == 'portal_service_active'),
-             'callMeForm' => $this->CoreFormFactory()
-                 ->serviceConsultForm(new Forms(), $services, $selectService)
-                 ->createView(),
-         ]);
-     }
-     public function servicePageWorkGroup(Request $request, EntityManagerInterface $em, \CoreBundle\Model\Service\ServiceWork $serviceWork)
-     {
-         $requestWorkGroup = $request->get('work_group');
-         $workGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $requestWorkGroup]);
-         if (!$workGroup) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $subWorkGroups = $em->getRepository(ServiceWorkGroup::class)->getServiceGroupByParent($workGroup);
-         $avgPrice = $em->getRepository(WorkGroupRelation::class)->getJobAvgPriceByGroup($workGroup);
-         $avgWorkTime = $em->getRepository(WorkGroupRelation::class)->getJobAvgTimeByGroup($workGroup);
-         $brands = $serviceWork->getGroupBrands($workGroup);
-         return $this->serviceRender('@Portal/Service/work-group-page.html.twig', [
-             'workGroup' => $workGroup,
-             'brands' => $brands,
-             'avgPrice' => round($avgPrice),
-             'avgWorkTime' => $avgWorkTime,
-             'services' => $subWorkGroups,
-             'isModalForm' => ($request->attributes->get('_route') == 'portal_service_active')
-         ]);
-     }
-     public function servicePageWorkGroupModelCalc(Request $request, EntityManagerInterface $em,
-                                                   \CoreBundle\Model\Service\ServiceWork $serviceWork)
-     {
-         $locale = $request->getLocale();
-         $requestWorkGroup = $request->get('work_group');
-         $requestBrand = $request->get('brand');
-         $requestModel = $request->get('model');
-         $workGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $requestWorkGroup]);
-         if (!$workGroup) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $brand = $em->getRepository(Brand::class)->findOneBy(['url' => $requestBrand]);
-         $mainGroup = $serviceWork->getMainService();
-         $subGroups = $serviceWork->getSubGroupsByBrand($mainGroup, $brand);
-         $anotherGroups = [];
-         foreach ($subGroups as $group) {
-             if ($group->getId() != $group->getId()) {
-                 $anotherGroups[] = [
-                     'title' => $group->getTitle($locale),
-                     'id' => $group->getId(),
-                     'price' => $em->getRepository(WorkGroupRelation::class)->getJobMinPriceByGroup($group)
-                 ];
-             }
-         }
-         $minWorkTime = $em->getRepository(WorkGroupRelation::class)->getJobMinTimeByGroup($workGroup);
-         $model = $em->getRepository(\CoreBundle\Entity\Model::class)->findOneBy(['url' => $requestModel]);
-         $brand = $em->getRepository(Brand::class)->findOneBy(['url' => $requestBrand]);
-         $dealers = $this->serviceService->getRegulationServicesByBrand($brand, $locale);
-         $minPrice = $em->getRepository(WorkGroupRelation::class)->getJobMinPriceByGroupBrand($workGroup, $brand);
-         $modelsGroupWorks = $this->serviceService->getModelsByGroupWork($workGroup, $brand);
-         $regulationDealers = $this->serviceService->getRegulationDealers($locale);
-         $brandDealerId = null;
-         if ($brand) {
-             $brandDealerId = $brand->getDealer()->first()->getId();
-         }
-         foreach ($regulationDealers as $key => $dealer) {
-             if ($dealer['id'] == 7) {
-                 unset($regulationDealers[$key]);
-                 $regulationDealers = array_values($regulationDealers);
-             }
-         }
-         $services = [];
-         $selectService = '';
-         foreach ($regulationDealers as $dealer) {
-             if (isset($brandDealerId) && $dealer['id'] == $brandDealerId) {
-                 $selectService = $dealer['title'];
-             }
-             $services[$dealer['id']] = $dealer['title'];
-         }
-         return $this->serviceRender('@Portal/Service/service-page-work-group-calc.html.twig', [
-             'mainGroup' => false,
-             'workGroup' => $workGroup,
-             'anotherGroups' => $anotherGroups,
-             'brand' => $brand,
-             'model' => $model,
-             'modelsGroupWorks' => $modelsGroupWorks ?? null,
-             'minPrice' => round($minPrice),
-             'minWorkTime' => $minWorkTime,
-             'dealers' => $dealers,
-             'isModalForm' => ($request->attributes->get('_route') == 'portal_service_active'),
-             'callMeForm' => $this->CoreFormFactory()
-                 ->serviceConsultForm(new Forms(), $services, $selectService)
-                 ->createView(),
-         ]);
-     }
-     public function servicePageWorkGroupBrandCalc(Request $request, EntityManagerInterface $em, \CoreBundle\Model\Service\ServiceWork $serviceWork): Response
-     {
-         $locale = $request->getLocale();
-         $requestWorkGroup = $request->get('work_group');
-         $requestSubGroup = $request->get('sub_group');
-         $requestBrand = $request->get('brand');
-         $workGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $requestSubGroup]);
-         if (!$workGroup) {
-             throw $this->createNotFoundException('category not exists');
-         }
-         $mainGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $requestWorkGroup]);
-         $brand = $em->getRepository(Brand::class)->findOneBy(['url' => $requestBrand]);
-         $minPrice = $em->getRepository(WorkGroupRelation::class)->getJobMinPriceByGroupBrand($workGroup, $brand);
-         $minWorkTime = $em->getRepository(WorkGroupRelation::class)->getJobMinTimeByGroup($workGroup);
-         $subGroups = $em->getRepository(ServiceWorkGroup::class)->getServiceGroupByParent($mainGroup);
-         if ($brand) {
-             $subGroups = $serviceWork->getSubGroupsByBrand($mainGroup, $brand);
-         }
-         $anotherGroups = [];
-         foreach ($subGroups as $group) {
-             if ($group->getId() != $workGroup->getId()) {
-                 $anotherGroups[] = [
-                     'title' => $group->getTitle($locale),
-                     'id' => $group->getId(),
-                     'price' => $em->getRepository(WorkGroupRelation::class)->getJobMinPriceByGroup($group)
-                 ];
-             }
-         }
-         $brand = $em->getRepository(Brand::class)->findOneBy(['url' => $requestBrand]);
-         $dealers = $this->serviceService->getRegulationServicesByBrand($brand, $locale);
-         $regulationDealers = $this->serviceService->getRegulationDealers($locale);
-         $brandDealerId = null;
-         if ($brand) {
-             $brandDealerId = $brand->getDealer()->first()->getId();
-         }
-         foreach ($regulationDealers as $key => $dealer) {
-             if ($dealer['id'] == 7) {
-                 unset($regulationDealers[$key]);
-                 $regulationDealers = array_values($regulationDealers);
-             }
-         }
-         $services = [];
-         $selectService = '';
-         foreach ($regulationDealers as $dealer) {
-             if (isset($brandDealerId) && $dealer['id'] == $brandDealerId) {
-                 $selectService = $dealer['title'];
-             }
-             $services[$dealer['id']] = $dealer['title'];
-         }
-         $modelsGroupWorks = $this->serviceService->getModelsByGroupWork($workGroup, $brand);
-         return $this->serviceRender('@Portal/Service/service-page-work-group-calc.html.twig', [
-             'mainGroup' => $mainGroup,
-             'workGroup' => $workGroup,
-             'modelsGroupWorks' => $modelsGroupWorks ?? null,
-             'brand' => $brand,
-             'minPrice' => round($minPrice),
-             'minWorkTime' => $minWorkTime,
-             'dealers' => $dealers,
-             'anotherGroups' => $anotherGroups,
-             'isModalForm' => ($request->attributes->get('_route') == 'portal_service_active'),
-             'callMeForm' => $this->CoreFormFactory()
-                 ->serviceConsultForm(new Forms(), $services, $selectService)
-                 ->createView(),
-         ]);
-     }
-     public function servicePageWorkGroupModel(Request $request, EntityManagerInterface $em)
-     {
-         $workGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $request->attributes->get('work_group')]);
-         $mainGroup = $em->getRepository(ServiceWorkGroup::class)->findOneBy(['url' => $request->attributes->get('work_group')]);
-         $brand = $em->getRepository(Brand::class)->findOneBy(['url' => $request->attributes->get('brand')]);
-         $model = $em->getRepository(Model::class)->findOneBy(['url' => $request->attributes->get('model')]);
-         $regulationDealers = $this->serviceService->getRegulationDealers($request->getLocale());
-         foreach ($regulationDealers as $key => $dealer) {
-             if ($dealer['id'] == 7) {
-                 unset($regulationDealers[$key]);
-                 $regulationDealers = array_values($regulationDealers);
-             }
-         }
-         $services = [];
-         $selectService = '';
-         foreach ($regulationDealers as $dealer) {
-             if (isset($brandDealerId) && $dealer['id'] == $brandDealerId) {
-                 $selectService = $dealer['title'];
-             }
-             $services[$dealer['id']] = $dealer['title'];
-         }
-         $serviceWorks = $em->getRepository(ServiceWork::class)
-             ->getWorksByModelBrandAndGroup($model->getUrl(), $brand->getUrl(), $workGroup->getId());
-         $subGroups = $em->getRepository(ServiceWorkGroup::class)
-             ->getServiceGroupByParentAndModel($mainGroup->getParent(), $model->getUrl());
-         $anotherGroups = [];
-         foreach ($subGroups as $group) {
-             if ($group->getId() != $workGroup->getId()) {
-                 $anotherGroups[] = [
-                     'title' => $group->getTitle($request->getLocale()),
-                     'id' => $group->getId(),
-                     'price' => $em->getRepository(WorkGroupRelation::class)->getJobMinPriceByGroup($group)
-                 ];
-             }
-         }
-         $minWorkTime = $em->getRepository(WorkGroupRelation::class)->getJobMinTimeByGroup($workGroup);
-         $minPrice = $em->getRepository(WorkGroupRelation::class)->getJobMinPriceByGroupBrand($workGroup, $brand);
-         $dealers = $this->serviceService->getRegulationServicesByBrand($brand, $request->getLocale());
-         return $this->serviceRender('@Portal/Service/service-page-by-model.html.twig', [
-             'serviceWorks' => $serviceWorks,
-             'mainGroup' => $mainGroup,
-             'workGroup' => $workGroup,
-             'model' => $model,
-             'dealers' => $dealers,
-             'minWorkTime' => $minWorkTime,
-             'minPrice' => round($minPrice),
-             'anotherGroups' => $anotherGroups,
-             'brand' => $brand,
-             'isModalForm' => ($request->attributes->get('_route') == 'portal_service_active'),
-             'callMeForm' => $this->CoreFormFactory()
-                 ->serviceConsultForm(new Forms(), $services, $selectService)
-                 ->createView(),
-         ]);
-     }
-     public function getBlogsCategoriesAction(Request $request, EntityManagerInterface $em): JsonResponse
-     {
-         $categories = $em->getRepository(BlogCategory::class)->findBy(['state' => 1]);
-         return new JsonResponse($this->prepareToSendCategories($categories, $request->getLocale()));
-     }
-     public function prepareToSendBlogPosts($posts, $locale, MediaExtensionVidi $mediaExtensionVidi): array
-     {
-         $jsonReadyPosts = [];
-         /** @var Blog $post */
-         foreach ($posts as $blog) {
-             $jsonReadyPosts[] = [
-                 'id' => $blog->getId(),
-                 'title' => $blog->getTitle($locale),
-                 'views' => $blog->getViews(),
-                 'date' => $blog->getCreated()->format('d.m.Y'),
-                 'image' => $mediaExtensionVidi->getPath($blog->getImagePreview(), 'reference'),
-                 'url' => $this->router->generate('portal_blog_single', ['url' => $blog->getUrl(), '_locale' => $locale]),
-                 'categories' => array_map(function ($category) use ($locale) {
-                     return [
-                         'id' => $category->getId(),
-                         'title' => $category->getTitle($locale),
-                     ];
-                 }, $blog->getCategories()->toArray()),
-             ];
-         }
-         return $jsonReadyPosts;
-     }
-     public function prepareToSendCategories($categories, $locale): array
-     {
-         $jsonReadyCategories = [];
-         /** @var BlogCategory $category */
-         foreach ($categories as $category) {
-             $jsonReadyCategories[] = [
-                 'id' => $category->getId(),
-                 'url' => $category->getUrl(),
-                 'title' => $category->getTitle($locale),
-             ];
-         }
-         return $jsonReadyCategories;
-     }
-     public function getBlogPostsAction(Request $request, EntityManagerInterface $em, MediaExtensionVidi $mediaExtensionVidi): JsonResponse
-     {
-         $category = $request->request->get('category');
-         $search = $request->request->get('search');
-         $page = $request->request->get('page', 1);
-         $data = $em->getRepository(Blog::class)->getBlogsByParams($category, $search, $page, 15);
-         $data['posts'] = $this->prepareToSendBlogPosts($data['posts'], $request->getLocale(), $mediaExtensionVidi);
-         return new JsonResponse($data);
-     }
- }
-