- <?php
- namespace DcSiteBundle\Controller;
- use AcquiringBundle\Component\Model\PortmoneAcquiring;
- use AcquiringBundle\Entity\Order;
- use Application\Sonata\MediaBundle\Entity\Media;
- use CoreBundle\Component\CoreFormFactory;
- use CoreBundle\Component\FormManager;
- use CoreBundle\Entity\Dealer;
- use CoreBundle\Entity\Vehicles\ConfiguratorColor;
- use CoreBundle\Entity\Vehicles\Equipment;
- use CoreBundle\Entity\Vehicles\EquipmentOptions;
- use CoreBundle\Entity\Vehicles\Feature;
- use CoreBundle\Entity\Vehicles\InStock;
- use CoreBundle\Entity\Vehicles\VariationCharacteristic;
- use CoreBundle\Entity\Vehicles\VehicleFile;
- use CoreBundle\Entity\Vehicles\VehicleItem;
- use CoreBundle\Factory\InStockVehicle;
- use CoreBundle\Factory\Vehicle as VehicleFactory;
- use CoreBundle\Model\Api\OnlineService\ApiServer1C;
- use CoreBundle\Model\Vehicles\AbstractVehicle;
- use CoreBundle\Model\Vehicles\EquipmentOptions as EquipmentOptionsCoreModel;
- use CoreBundle\Model\Vehicles\Repository;
- use CoreBundle\Services\MediaExtensionVidi;
- use DcSiteBundle\Services\VehicleService;
- use DcSiteBundle\Twig\TwigDcExtension;
- use Doctrine\ORM\EntityManagerInterface;
- use PortalBundle\Model\SeoMetaTag;
- use Sonata\MediaBundle\Provider\YouTubeProvider;
- use Symfony\Component\Filesystem\Filesystem;
- use Symfony\Component\HttpFoundation\BinaryFileResponse;
- use Symfony\Component\HttpFoundation\File\UploadedFile;
- use Symfony\Component\HttpFoundation\JsonResponse;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\RequestStack;
- use Symfony\Component\HttpFoundation\Session\SessionInterface;
- use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
- use Symfony\Component\Routing\RouterInterface;
- use Symfony\Contracts\Translation\TranslatorInterface;
- use Twig\Environment;
- class CarController 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 loadCarFeature(Request $request): JsonResponse
-     {
-         $id = $request->get('id');
-         $vehicle = $this->vehicleFactory->createById($id);
-         if (!$vehicle) {
-             return $this->json(['success' => false]);
-         }
-         $features = $vehicle->getFeatures();
-         if (!count($features)) {
-             return $this->json(['success' => false]);
-         }
-         $result = [];
-         /**
-          * @var $feature Feature
-          */
-         foreach ($features as $feature) {
-             $id = $feature->getGroup()->getId();
-             if (!isset($result[$id])) {
-                 $result[$id] = [
-                     'name' => $feature->getGroup()->getNameByLocale($request->getLocale()),
-                     'features' => []
-                 ];
-             }
-             $result[$id]['features'][] = [
-                 'id' => $feature->getId(),
-                 'image' => $this->mediaExtensionVidi->getPath($feature->getImage(), 'reference'),
-                 'title' => $feature->getContentByLocale($request->getLocale())->getTitle(),
-                 'content' => $feature->getContentByLocale($request->getLocale())->getContent(),
-                 'groupId' => $id,
-             ];
-         }
-         return $this->json(['success' => true, 'features' => $result]);
-     }
-     public function loadCarColors(Request $request): JsonResponse
-     {
-         $id = $request->get('id');
-         $vehicle = $this->vehicleFactory->createById($id);
-         if (!$vehicle) {
-             return $this->json(['success' => false]);
-         }
-         if (!count($vehicle->getColors())) {
-             return $this->json(['success' => false]);
-         }
-         $colors = [];
-         /** @var ConfiguratorColor $color */
-         foreach ($vehicle->getColors() as $color) {
-             if (!$color->getState()) {
-                 continue;
-             }
-             $Gallery = $color->getGallery();
-             if (!$Gallery) {
-                 continue;
-             }
-             $galleryItems = $Gallery->getGalleryItems();
-             if (!$galleryItems->count()) {
-                 continue;
-             }
-             $colors[] = [
-                 'title' => $color->getName($request->getLocale()),
-                 'price' => $color->calcPrice(),
-                 'preview' => $this->mediaExtensionVidi->getPath($color->getImage(), 'reference'),
-                 'image' => $this->mediaExtensionVidi->getPath($galleryItems->first()->getMedia(), 'reference')
-             ];
-         }
-         if (!count($colors)) {
-             return $this->json(['success' => false]);
-         }
-         return $this->json(['success' => true, 'colors' => $colors]);
-     }
-     public function loadCarGallery(Request $request): JsonResponse
-     {
-         $id = $request->get('id');
-         $width = $request->get('width');
-         //TODO remove magic numbers
-         if ($width < 590) {
-             $format = 'slider';
-             $bigFormat = 'slider';
-         } elseif ($width < 870) {
-             $format = 'new_slider';
-             $bigFormat = 'new_slider';
-         } else {
-             $format = 'new_slider';
-             $bigFormat = 'reference';
-         }
-         $vehicle = $this->vehicleFactory->createById($id);
-         if (!$vehicle) {
-             return $this->json(['success' => false]);
-         }
-         $galleries = [];
-         $twig = $this->mediaExtensionVidi;
-         $images = $vehicle->getGallery();
-         if ($images && $images->getGalleryItems()) {
-             foreach ($images->getGalleryItems() as $item) {
-                 $media = $item->getMedia();
-                 $metadata = $media->getProviderMetadata();
-                 $metadata = empty($metadata['title']) && empty($metadata['alt']) ? false : $metadata;
-                 if (!$media) {
-                     continue;
-                 }
-                 $galleries['images'][] = [
-                     'small' => $twig->getPath($media, $format),
-                     'full' => $twig->getPath($media, $bigFormat),
-                     'image' => $twig->getPath($media, 'reference'),
-                     'image_webp' => $twig->pathWebp($media, 'reference'),
-                     'metadata' => $metadata,
-                 ];
-             }
-         }
-         $Video = $vehicle->getVideo();
-         if ($Video && $Video->getGalleryItems()) {
-             foreach ($Video->getGalleryItems() as $item) {
-                 /** @var Media $media */
-                 $media = $item->getMedia();
-                 if (!$media) {
-                     continue;
-                 }
-                 /** @var YouTubeProvider $provider */
-                 $provider = $this->get($media->getProviderName());
-                 if (!($provider instanceof YouTubeProvider)) {
-                     continue;
-                 }
-                 $url = $provider->getReferenceUrl($media);
-                 $paramsStr = explode('?', $url);
-                 if (!isset($paramsStr[1])) {
-                     continue;
-                 }
-                 parse_str($paramsStr[1], $params);
-                 if (!isset($params['v'])) {
-                     continue;
-                 }
-                 $galleries['video'][] = [
-                     'url' => $url,
-                     'id' => $params['v'],
-                 ];
-             }
-         }
-         return $this->json(['success' => true, 'galleries' => $galleries]);
-     }
-     public function loadEquipments(Request $request): JsonResponse
-     {
-         $id = $request->get('id');
-         $vehicle = $this->vehicleRepository->findById($id);
-         if (!$vehicle) {
-             return $this->json(['succes' => false]);
-         }
-         $equipments = [];
-         $equipmentOptions = [];
-         /** @var Equipment $equipment */
-         foreach ($vehicle->getEquipments() as $equipment) {
-             if (!$equipment->getState()) {
-                 continue;
-             }
-             $sortPrice = $equipment->minPrice();
-             if ($sortPrice == 0) {
-                 $sortPrice = Equipment::SORT_PRICE;
-             }
-             $equipments[] = [
-                 'id' => $equipment->getId(),
-                 'title' => $equipment->getTitle(),
-                 'sortPrice' => $sortPrice,
-                 'price' => $equipment->minPrice(),
-                 'fullPrice' => $equipment->minFullPrice(),
-                 'preOrderPrice' => $equipment->minPreOrderPrice(),
-             ];
-             $options = $equipment->getOptions();
-             /** @var EquipmentOptions $option */
-             foreach ($options as $option) {
-                 $oneOption = $option->getOption();
-                 $oType = $option->getOption()->getOptionType();
-                 if (!isset($equipmentOptions[$oType])) {
-                     $equipmentOptions[$oType] = [
-                         'id' => $oType,
-                         'title' => EquipmentOptionsCoreModel::getTypeName($oType, $request->getLocale()),
-                         'options' => []
-                     ];
-                 }
-                 if (!isset($equipmentOptions[$oType]['options'][$oneOption->getId()])) {
-                     $opTitle = $oneOption->getTitleUa();
-                     if ($request->getLocale() == 'ru') {
-                         $opTitle = $oneOption->getTitleRu();
-                     }
-                     $equipmentOptions[$oType]['options'][$oneOption->getId()] = [
-                         'id' => $oneOption->getId(),
-                         'title' => $opTitle,
-                         'values' => []
-                     ];
-                 }
-                 $currentOptionValue = '';
-                 if (isset($equipmentOptions[$oType]['options'][$oneOption->getId()]['values'][$equipment->getId()])) {
-                     //TODO refactor this
-                     //phpcs:ignore
-                     $currentOptionValue = $equipmentOptions[$oType]['options'][$oneOption->getId()]['values'][$equipment->getId()]['value'];
-                 }
-                 if ($currentOptionValue) {
-                     $currentOptionValue .= ', ' . $option->getValue($request->getLocale());
-                 } else {
-                     $currentOptionValue = $option->getValue($request->getLocale());
-                 }
-                 $equipmentOptions[$oType]['options'][$oneOption->getId()]['values'][$equipment->getId()] = [
-                     'price' => $option->price(),
-                     'value' => $currentOptionValue,
-                     //TODO remove magic numbers
-                     'optional' => $option->getIsOptional() > 0,
-                 ];
-             }
-         }
-         usort($equipments, fn($a, $b) => $a['sortPrice'] <=> $b['sortPrice']);
-         return $this->json(['success' => true, 'equipments' => $equipments, 'equipmentOptions' => $equipmentOptions]);
-     }
-     public function getModelInfo($id, TranslatorInterface $translator, TwigDcExtension $twigDcExtension): JsonResponse
-     {
-         $Vehicle = $this->vehicleFactory->createById($id, $translator, $twigDcExtension);
-         if (!$Vehicle) {
-             return new JsonResponse(['success' => false]);
-         }
-         $modelOptions = $this->buildModelInfo($Vehicle);
-         $user = $this->getUser();
-         if (
-             $user &&
-             ($user->hasRole('ROLE_DC_MANAGER') ||
-                 $user->hasRole('ROLE_SUPER_ADMIN')) &&
-             $this->getDealer()->getId() == $user->getDealer()->getId()
-         ) {
-             $modelOptions['isManager'] = true;
-             $modelOptions['loadVariationUrl'] = $this->router->generate('base_comparison_variation_info');
-             $modelOptions['saveVariationUrl'] = $this->router->generate('base_comparison_variation_save');
-         }
-         return new JsonResponse($modelOptions);
-     }
-     private function buildModelInfo(AbstractVehicle $vehicle, TranslatorInterface $translator, TwigDcExtension $twigDcExtension): array
-     {
-         $locale = $this->requestStack->getCurrentRequest()->getLocale();
-         $modelOptions = [
-             'models' => []
-         ];
-         $Equipments = $vehicle->getAvailEquipments();
-         uasort($Equipments, fn($a, $b) => $a->getPosition() <=> $b->getPosition());
-         /** @var Equipment $equipment */
-         foreach ($Equipments as $equipment) {
-             //TODO remove magic numbers
-             if ($equipment->getState() < 1) {
-                 continue;
-             }
-             $oneEquipment = [
-                 'id' => $equipment->getId(),
-                 'title' => $equipment->getTitle(),
-                 'image' => $vehicle->getPreviewPath(),
-                 'minIntPrice' => false,
-                 'minPrice' => $equipment->minPrice(),
-                 'variations' => []
-             ];
-             $variations = $equipment->getVehicleItems();
-             /** @var  VehicleItem $vehicleItem */
-             foreach ($variations as $vehicleItem) {
-                 //TODO remove magic numbers
-                 if ($vehicleItem->getState() < 1) {
-                     continue;
-                 }
-                 $vehicleModel = $this->vehicleFactory->createByVehicleItem($vehicleItem);
-                 $intPrice = $vehicleItem->calcPrice();
-                 $price = $twigDcExtension->priceFilter(round($vehicleItem->calcPrice()));
-                 $body = $vehicleModel->getBodyTypeName($locale);
-                 $engine = '';
-                 $fuelType = $vehicleModel->getFuelTypeName($locale);
-                 $transmissionType = $vehicleModel->getTransmissionTypeName($locale);
-                 if ($fuelType) {
-                     $engine .= $fuelType . ' / ';
-                 }
-                 if ($transmissionType) {
-                     $engine .= $transmissionType;
-                 }
-                 $power = '';
-                 if ($vehicleModel->getEnginePower($locale)) {
-                     $power = $vehicleModel->getEnginePower($locale) . ' ' .
-                         $translator->trans('car_page.compare.max_p_short', [], 'dc_base');
-                 }
-                 $techOptions = [
-                     [
-                         'title' => $translator->trans('car_page.compare.year', [], 'dc_base'),
-                         'value' => $vehicleItem->getYear()
-                     ],
-                 ];
-                 /** @var VariationCharacteristic $characteristic */
-                 foreach ($vehicleItem->getVariation()->getCharacteristics() as $characteristic) {
-                     if (!$characteristic->getCharacteristic()->getIsRequired()) {
-                         continue;
-                     }
-                     if ($characteristic->getCharacteristicValue()) {
-                         $value = $characteristic->getCharacteristicValue()->getValue($locale);
-                     } else {
-                         $value = $characteristic->getValue($locale);
-                     }
-                     $techOptions[$characteristic->getCharacteristic()->getId()] = [
-                         'title' => $characteristic->getCharacteristic()->getTitle($locale),
-                         'value' => $value,
-                     ];
-                 }
-                 $variationArray = [
-                     'id' => $vehicleItem->getId(),
-                     'data' => [
-                         'engineName' => $vehicleModel->getEngineName($locale),
-                         'body' => $body,
-                         'drive' => $vehicleModel->getDriveUnitTypeName($locale),
-                         'driveShort' => $vehicleModel->getDriveUnitTypeName($locale),
-                         'trans' => $vehicleModel->getTransmissionTypeName($locale),
-                         'fuel' => $vehicleModel->getFuelTypeName($locale),
-                         'engine' => $engine,
-                         'power' => $power,
-                     ],
-                     'price' => $price,
-                     'preorderPrice' => (int)$vehicleItem->getPreorderPrice(),
-                     'intPrice' => $intPrice,
-                     'technicalOption' => $techOptions,
-                 ];
-                 if ($vehicleModel->hasActionPrice()) {
-                     $variationArray['fullPrice'] = $vehicleModel->fullPrice();
-                 }
-                 $oneEquipment['variations'][] = $variationArray;
-             }
-             usort($oneEquipment['variations'], fn($a, $b) => $a['intPrice'] <=> $b['intPrice']);
-             if (count($oneEquipment['variations']) > 0) {
-                 $modelOptions['models'][] = $oneEquipment;
-             }
-         }
-         usort($modelOptions['models'], fn($a, $b) => $a['minIntPrice'] <=> $b['minIntPrice']);
-         $techVariations = [];
-         $this->buildTech($vehicle, $techVariations);
-         $modelOptions['tech'] = $techVariations;
-         return $modelOptions;
-     }
-     private function buildTech(AbstractVehicle $vehicle, &$techVariations)
-     {
-         $locale = $this->requestStack->getCurrentRequest()->getLocale();
-         $vehicleItems = $vehicle->getVehicleItems();
-         $keys = [];
-         foreach ($vehicleItems as $vehicleItem) {
-             $characteristics = $vehicleItem->getVariation()->getCharacteristics();
-             $key = $this->buildVariationKey($characteristics);
-             if (in_array($key, $keys)) {
-                 continue;
-             }
-             $keys[] = $key;
-             /** @var VariationCharacteristic $vCharacteristic */
-             foreach ($characteristics as $vCharacteristic) {
-                 $characteristicId = $vCharacteristic->getCharacteristic()->getId();
-                 if (!isset($techVariations[$characteristicId])) {
-                     $techVariations[$characteristicId] = [
-                         'title' => $vCharacteristic->getCharacteristic()->getTitle($locale),
-                         'vars' => []
-                     ];
-                 }
-                 $charValue = $vCharacteristic->getCharacteristicValue();
-                 $value = $charValue ? $charValue->getValue($locale) : $vCharacteristic->getValue($locale);
-                 $techVariations[$characteristicId]['vars'][] = $value;
-             }
-         }
-         foreach ($techVariations as $id => $row) {
-             $hasValue = false;
-             foreach ($row['vars'] as $val) {
-                 if ($val) {
-                     $hasValue = true;
-                 }
-             }
-             if (!$hasValue) {
-                 unset($techVariations[$id]);
-             }
-         }
-     }
-     private function buildVariationKey($characteristic): string
-     {
-         $characteristicArray = [];
-         /** @var VariationCharacteristic $vCharacteristic */
-         foreach ($characteristic as $vCharacteristic) {
-             $char = $vCharacteristic->getCharacteristic();
-             $charValue = $vCharacteristic->getCharacteristicValue();
-             $charValueId = '';
-             if ($charValue) {
-                 $charValueId = $charValue->getId();
-             }
-             $valueUa = $vCharacteristic->getValueUa();
-             $valueRu = $vCharacteristic->getValueRu();
-             $key = $charValueId . $valueUa . $valueRu;
-             $characteristicArray[$char->getId()] = md5($key);
-         }
-         ksort($characteristicArray);
-         return md5(implode('', $characteristicArray));
-     }
-     /**
-      * @param $id
-      * @return JsonResponse
-      */
-     public function getModelOptions($id, Request $request)
-     {
-         $Vehicle = $this->vehicleFactory->createById($id);
-         if (!$Vehicle) {
-             return new JsonResponse(['success' => false]);
-         }
-         $modelOptions = [];
-         $Equipments = $Vehicle->getAvailEquipments();
-         /** @var Equipment $equipment */
-         foreach ($Equipments as $equipment) {
-             $options = $equipment->getOptions();
-             /** @var EquipmentOptions $option */
-             foreach ($options as $option) {
-                 $oneOption = $option->getOption();
-                 $oType = $option->getOption()->getOptionType();
-                 if (!isset($modelOptions[$oType])) {
-                     $modelOptions[$oType] = [
-                         'id' => $oType,
-                         'title' => EquipmentOptionsCoreModel::getTypeName($oType, $request->getLocale()),
-                         'options' => []
-                     ];
-                 }
-                 if (!isset($modelOptions[$oType]['options'][$oneOption->getId()])) {
-                     $opTitle = $request->getLocale() == 'ru' ? $oneOption->getTitleRu() : $oneOption->getTitleUa();
-                     $modelOptions[$oType]['options'][$oneOption->getId()] = [
-                         'id' => $oneOption->getId(),
-                         'title' => $opTitle,
-                         'values' => []
-                     ];
-                 }
-                 $modelOptions[$oType]['options'][$oneOption->getId()]['values'][$equipment->getId()] = [
-                     'price' => $option->price(),
-                     'value' => $option->getValue($request->getLocale()),
-                 ];
-             }
-         }
-         return new JsonResponse($modelOptions);
-     }
-     public function downloadFile($id): BinaryFileResponse
-     {
-         $File = $this->em->getRepository(VehicleFile::class)->find($id);
-         if (!$File) {
-             throw $this->createNotFoundException();
-         }
-         $rootDir = $this->getParameter('kernel.project_dir');
-         $filePath = $rootDir . '/public/uploads/files/' . $File->getPath();
-         if (!$filePath || !file_exists($filePath)) {
-             $filePath = $rootDir . '/public/uploads/files/' . $File->getVehicle()->getId() . '/' . $File->getPath();
-             if (!$filePath || !file_exists($filePath)) {
-                 throw $this->createNotFoundException();
-             }
-         }
-         return $this->file($filePath);
-     }
-     public function showFile($id): BinaryFileResponse
-     {
-         $File = $this->em->getRepository(VehicleFile::class)->find($id);
-         if (!$File) {
-             throw $this->createNotFoundException();
-         }
-         $rootDir = $this->getParameter('kernel.root_dir');
-         $filePath = $rootDir . '/../public/uploads/files/' . $File->getPath();
-         if (!$filePath || !file_exists($filePath)) {
-             $filePath = $rootDir . '/../public/uploads/files/' . $File->getVehicle()->getId() . '/' . $File->getPath();
-             if (!$filePath || !file_exists($filePath)) {
-                 throw $this->createNotFoundException();
-             }
-         }
-         return new BinaryFileResponse($filePath);
-     }
-     public function pricesLoad(Request $request, VehicleService $vehicleService): JsonResponse
-     {
-         $id = $request->get('id');
-         $vehicleEntity = $this->vehicleRepository->findById($id);
-         if (!$vehicleEntity) {
-             return $this->json(['succes' => false]);
-         }
-         $vehiclePrice = $vehicleService->getVehiclePrice($vehicleEntity);
-         $parameters = array_merge($vehiclePrice, [
-             'success' => true,
-             'dealerId' => $this->getDealer()->getId(),
-         ]);
-         return $this->json($parameters);
-     }
-     public function personalInit(): JsonResponse
-     {
-         $vehicles = $this->vehicleRepository->getNewByDealer($this->getDealer());
-         $result = [];
-         foreach ($vehicles as $row) {
-             $vehicleModel = $this->vehicleFactory->createByEntity($row);
-             if (!$vehicleModel) {
-                 continue;
-             }
-             $result[] = [
-                 'id' => $vehicleModel->getVehicleId(),
-                 'title' => $vehicleModel->getModelName(),
-                 'image' => $vehicleModel->getPreviewPath('menu'),
-                 'position' => $vehicleModel->getPosition(),
-             ];
-         }
-         usort($result, fn($a, $b) => $a['position'] <=> $b['position']);
-         return $this->json(['cars' => $result]);
-     }
-     public function techLoad(Request $request, VehicleService $vehicleService): JsonResponse
-     {
-         $id = $request->get('id');
-         $Vehicle = $this->vehicleRepository->findById($id);
-         if (!$Vehicle) {
-             return $this->json(['success' => false]);
-         }
-         $technicalCharacteristic = $vehicleService->getVehicleTechnicalCharacteristic($Vehicle);
-         return $this->json($technicalCharacteristic);
-     }
-     public function createOrder(Request $request, ApiServer1C $apiServer1C, PortmoneAcquiring $portmoneAcquiring, \AcquiringBundle\Component\Model\Order $orderModel): JsonResponse
-     {
-         $carId = $request->get('car');
-         if (!$carId) {
-             throw new NotFoundHttpException();
-         }
-         $InStock = $this->em->getRepository(InStock::class)->find($carId);
-         if (!$InStock) {
-             return $this->json(['success' => false]);
-         }
-         $documentUid = $apiServer1C->createPaymentDocument($this->getDealer());
-         if (!$documentUid) {
-             return $this->json(['success' => false]);
-         }
-         $dc = $portmoneAcquiring->getDcByDealerId($this->getDealer()->getId());
-         $Order = $orderModel->createInStockOrder($request, $documentUid, $InStock, $this->getDealer(), PortmoneAcquiring::ACQUIRING_TYPE, $dc);
-         $backref = $request->getSchemeAndHttpHost() . $this->router->generate('toyota_odessa_buy_result', ['hash' => $Order->getHash()]);
-         $formData = $portmoneAcquiring->getInStockFormData($Order, $backref);
-         return $this->json(['success' => true, 'formData' => $formData]);
-     }
-     public function updateOrder(Request $request, InStockVehicle $inStockVehicle, ApiServer1C $apiServer1C): JsonResponse
-     {
-         $orderId = $request->get('order');
-         $Order = $this->em->getRepository(Order::class)->find($orderId);
-         if (!$Order) {
-             return $this->json(['success' => false]);
-         }
-         $files = [];
-         $pf = $request->files->get('pf');
-         if ($pf instanceof UploadedFile) {
-             $files[] = [
-                 'name' => $pf->getClientOriginalName(),
-                 'ext' => $pf->getClientOriginalExtension(),
-                 'data' => base64_encode(file_get_contents($pf->getRealPath())),
-             ];
-         }
-         $ps = $request->files->get('ps');
-         if ($ps instanceof UploadedFile) {
-             $files[] = [
-                 'name' => $ps->getClientOriginalName(),
-                 'ext' => $ps->getClientOriginalExtension(),
-                 'data' => base64_encode(file_get_contents($ps->getRealPath())),
-             ];
-         }
-         $pp = $request->files->get('pp');
-         if ($pp instanceof UploadedFile) {
-             $files[] = [
-                 'name' => $pp->getClientOriginalName(),
-                 'ext' => $pp->getClientOriginalExtension(),
-                 'data' => base64_encode(file_get_contents($pp->getRealPath())),
-             ];
-         }
-         $inn = $request->files->get('inn');
-         if ($inn instanceof UploadedFile) {
-             $files[] = [
-                 'name' => $inn->getClientOriginalName(),
-                 'ext' => $inn->getClientOriginalExtension(),
-                 'data' => base64_encode(file_get_contents($inn->getRealPath())),
-             ];
-         }
-         $carModel = $inStockVehicle->createByEntity($Order->getCar());
-         $OrderData = [
-             'ID' => $Order->getOneCDocUid(),
-             'CustomerName' => $Order->getName(),
-             'Status' => $Order->getState(),
-             'PaymentAmount' => $Order->getPrice(),
-             'AmountPaid' => $Order->getBankAmount(),
-             'Amount' => $carModel->price(),
-             'PhoneMobile' => $Order->getPhone(),
-             'RRN' => $Order->getRrn(),
-             'Works' => [],
-             'Parts' => [],
-             'Files' => $files,
-             'Cars' => [
-                 [
-                     'VIN' => $carModel->getVin(),
-                     'Amount' => $carModel->price(),
-                     'PaymentAmount' => $Order->getBankAmount(),
-                 ]
-             ]
-         ];
-         $result = $apiServer1C->updatePaymentDocument($OrderData, $this->getDealer());
-         if ($result) {
-             return $this->json(['success' => $result]);
-         }
-         die('Fail');
-     }
-     public function findModels(Request $request, TranslatorInterface $translator): JsonResponse
-     {
-         $dealerId = $request->request->get('dealer');
-         $dealer = $dealerId ? $this->em->getRepository(Dealer::class)->find($dealerId) : null;
-         if (!$dealer) {
-             return new JsonResponse(['success' => false]);
-         }
-         $vehicles = $this->vehicleRepository->getNewByDealer($dealer);
-         if ($dealer->getId() == 8 || $dealer->getId() == 15) {
-             $vehicles = $this->vehicleRepository->getSortedByPositionVehicle($vehicles);
-         }
-         $cars = [];
-         foreach ($vehicles as $vehicle) {
-             if (!$vehicle->getCreditAvailable()) continue;
-             $vehicleModel = $this->vehicleFactory->createByEntity($vehicle);
-             if (!$vehicleModel) {
-                 continue;
-             }
-             $hasHybrid = '';
-             if ($vehicleModel->hasHybrid()) {
-                 $hasHybrid = ' Hybrid';
-             }
-             $cars[] = [
-                 'image' => $vehicleModel->getPreviewPath('reference'),
-                 'image_webp' => $vehicleModel->getPreviewPathWebp('reference'),
-                 'name' => $vehicleModel->getModelName() . $hasHybrid,
-                 'fullName' => ($vehicleModel->hasHybrid()) ? $vehicleModel->getModelName() . ' ' . $translator->trans('pages.base.car_type.hybrid', [], 'dc_base') : $vehicleModel->getModelName(),
-                 'minPrice' => $vehicleModel->minPrice(),
-                 'id' => $vehicleModel->getVehicleId(),
-                 'hasHybrid' => $vehicleModel->hasHybrid(),
-             ];
-         }
-         $brandData = [
-             'id' => '',
-             'name' => '',
-         ];
-         if ($dealer->getBrand()) {
-             $brandData = [
-                 'id' => $dealer->getBrand()->getId(),
-                 'name' => $dealer->getBrand()->getName(),
-             ];
-         }
-         $user = null;
-         if ($this->getUser()) {
-             $user = [
-                 'name' => $this->getUser()->getName(),
-                 'surname' => $this->getUser()->getLastName(),
-                 'email' => $this->getUser()->getEmail(),
-                 'phone' => $this->getUser()->getPhone(),
-             ];
-         }
-         return new JsonResponse(['success' => true, 'cars' => $cars, 'brand' => $brandData, 'user' => $user]);
-     }
-     public function findEquipments(Request $request): JsonResponse
-     {
-         $vehicleId = $request->get('vehicleId');
-         $vehicleFactory = $this->vehicleFactory;
-         /** @var Equipment $equipment */
-         foreach ($vehicleFactory->createById($vehicleId)->getAvailEquipments() as $equipment) {
-             $equipmentData = [
-                 'id' => $equipment->getId(),
-                 'title' => strtoupper($equipment->getTitle()),
-                 'minPrice' => $equipment->minPrice(),
-                 'variations' => [],
-             ];
-             /** @var VehicleItem $vehicleItem */
-             foreach ($equipment->getVehicleItems() as $vehicleItem) {
-                 if (!$vehicleItem->getState()) {
-                     continue;
-                 }
-                 $vehicleModel = $vehicleFactory->createByVehicleItem($vehicleItem);
-                 $equipmentData['variations'][] = [
-                     'id' => $vehicleItem->getVariation()->getId(),
-                     'price' => $vehicleItem->calcPrice(),
-                     'fuel' => $vehicleModel->getFuelTypeName($request->getLocale()),
-                     'engine_volume' => $vehicleModel->getEngineVolume($request->getLocale()),
-                     'engine_power' => $vehicleModel->getEnginePower($request->getLocale()),
-                     'transmission' => $vehicleModel->getTransmissionTypeName($request->getLocale()),
-                     'drive' => $vehicleModel->getDriveUnitTypeName($request->getLocale()),
-                     'title' => strtoupper($equipment->getTitle()),
-                     'body' => $vehicleModel->getBodyTypeName($request->getLocale()),
-                 ];
-             }
-             $data['equipments'][] = $equipmentData;
-         }
-         usort($data['equipments'], fn($a, $b) => $a['minPrice'] <=> $b['minPrice']);
-         return new JsonResponse(array_merge(['success' => true], $data));
-     }
- }
-