<?php
namespace AdminBundle\Admin\Vehicles\Special;
use AdminBundle\Admin\Vehicles\BaseInStockAdmin;
use CoreBundle\Entity\Vehicles\InStock;
use CoreBundle\Factory\InStockVehicle;
use CoreBundle\Model\Vehicles\InStockVehicle as InStockVehicleModel;
use CoreBundle\Model\Vehicles\VehicleType;
use CoreBundle\Services\MediaExtensionVidi;
class InStockAdmin extends BaseInStockAdmin
{
protected $baseRouteName = 'in-stock-special';
protected $baseRoutePattern = 'in-stock-special';
protected MediaExtensionVidi $mediaExtensionVidi;
protected InStockVehicle $inStockVehicleFactory;
public function setExtraServices(MediaExtensionVidi $mediaExtensionVidi, InStockVehicle $inStockVehicleFactory): void
{
$this->mediaExtensionVidi = $mediaExtensionVidi;
$this->inStockVehicleFactory = $inStockVehicleFactory;
}
protected function getVehicleType() {
return VehicleType::SPECIAL_TYPE;
}
protected function getVariationAdminCode(): string
{
return 'admin.vehicles.special_variation';
}
protected function getVehicleAdminCode(): string
{
return 'admin.vehicles.special_vehicle';
}
private function getPhotos(InStockVehicleModel $inStock): array
{
$result = [];
foreach ($inStock->getGallery()->getGalleryItems() as $value) {
$result[] = 'https://vidi.ua'. $this->mediaExtensionVidi->getPath($value, 'reference');
}
return $result;
}
/**
* @param InStock $object
* @return void
* @throws \Exception
*/
public function prePersistf($object): void
{
$inStock = $this->inStockVehicleFactory->createByEntity($object);
$data = [
'currencyId' => 2,
'price' => $inStock->price(),
'categoryId' => 1,
'markaId' => $inStock->getBrand()->getRiaId(),
'modelId' => $inStock->getModel()->getRiaId(),
'baseId' => $inStock->getModel()->getId(),
'equipId' => $inStock->getEquipment()->getId(),
'year' => $inStock->getEquipment()->getId(),
'inStock' => 1,
'testDrive' => 1,
'withoutFirstRegistration' => 0,
'description' => $inStock->getContent('ua'),
'vinCode' => $inStock->getVin(),
'photos' => $this->getPhotos($inStock),
];
$result = $this->autoRia->addNewVehicle($data);
parent::prePersist($object);
}
}