<?php
namespace AdminBundle\Admin;
use CoreBundle\Model\Api\AutoRia\AutoRia;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
/**
* Class VehicleEstimateOddsAdmin
* @package AdminBundle\Admin
*/
class VehicleEstimateOddsAdmin extends AbstractAdmin
{
protected AutoRia $autoRia;
public function setContainerServices(AutoRia $autoRia): void
{
$this->autoRia = $autoRia;
}
/**
* @param RouteCollectionInterface $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->add('getModels');
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('brand_title', null, ['label' => 'Бренд'])
->add('model_title', null, ['label' => 'Модель'])
;
}
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper): void
{
$brands = $this->decorateToSelect($this->autoRia->getBrands());
$fuel = $this->decorateToSelect($this->autoRia->getFuelTypes());
$transmission = $this->decorateToSelect($this->autoRia->getTransmissionTypes());
$models = [];
$object = $this->getSubject();
if (count($this->getRequest()->request)) {
$brandId = current(current($this->getRequest()->request))['brand_id'];
$models = $this->decorateToSelect($this->autoRia->getModels($brandId));
} elseif ($object->getBrandId()) {
$brandId = $object->getBrandId();
$models = $this->decorateToSelect($this->autoRia->getModels($brandId));
}
$formMapper
->with('TradeIn коэффициент', ['class' => 'col-lg-6'])
->add('brand_id', ChoiceType::class, ['label' => 'Бренд', 'choices' => $brands, 'attr' => ['class' => 'select-brand-id bootstrap-select selectpicker', 'data-sonata-select2' => 'false', 'data-live-search'=> 'true']])
->add('brand_title', HiddenType::class, ['label' => 'Бренд', 'attr' => ['class' => 'input-brand-title']])
->add('model_id',ChoiceType::class, ['label' => 'Модель', 'required' => false, 'choices' => $models, 'attr' => ['class' => 'select-model-id bootstrap-select selectpicker', 'data-sonata-select2' => 'false', 'data-live-search'=> 'true']])
->add('model_title',HiddenType::class, ['label' => 'Модель', 'required' => false, 'attr' => ['class' => 'input-model-title']])
->add('year_from',null, ['label' => 'Год с', 'required' => false])
->add('year_to',null, ['label' => 'Год по', 'required' => false])
->add('mileage_from',null, ['label' => 'Пробег с (тыс. км.)', 'required' => false])
->add('mileage_to',null, ['label' => 'Пробег по (тыс. км.)', 'required' => false])
->add('fuel_id',ChoiceType::class, ['label' => 'Топливо', 'required' => false, 'choices' => $fuel, 'attr' => ['class' => 'bootstrap-select selectpicker', 'data-sonata-select2' => 'false']])
->add('gear_id',ChoiceType::class, ['label' => 'КПП', 'required' => false, 'choices' => $transmission, 'attr' => ['class' => 'bootstrap-select selectpicker', 'data-sonata-select2' => 'false']])
->add('odd',null, ['label' => 'Коэффициент %, будет вычитаться из цены Auto.Ria'])
->end();
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->addIdentifier('id')
->add('brand_title', null, ['label' => 'Бренд'])
->add('model_title', null, ['label' => 'Модель'])
->add('year_from',null, ['label' => 'Год с'])
->add('year_to', null, ['label' => 'Год по'])
->add('mileage_from',null, ['label' => 'Пробег с (тыс. км.)'])
->add('mileage_to',null, ['label' => 'Пробег по (тыс. км.)'])
->add('odd',null, ['label' => 'Коэффициент'])
->add('_action', 'actions', [
'label' => 'Действия',
'actions' => [
'edit' => [],
'delete' => [],
]
]);
}
private function decorateToSelect($items): array
{
$result = [];
foreach ($items as $item) {
$result[$item['id']] = $item['title'];
}
return array_flip($result);
}
protected function configure(): void
{
parent::configure(); // TODO: Change the autogenerated stub
$this->setTemplate('edit', '@Admin/admin/vehicle_estimate_odds.html.twig');
}
}