src/AdminBundle/Admin/VehicleEstimateOddsAdmin.php line 17

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin;
  3. use CoreBundle\Model\Api\AutoRia\AutoRia;
  4. use Sonata\AdminBundle\Admin\AbstractAdmin;
  5. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Form\FormMapper;
  8. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  11. /**
  12.  * Class VehicleEstimateOddsAdmin
  13.  * @package AdminBundle\Admin
  14.  */
  15. class VehicleEstimateOddsAdmin extends AbstractAdmin
  16. {
  17.     protected AutoRia $autoRia;
  18.     public function setContainerServices(AutoRia $autoRia): void
  19.     {
  20.         $this->autoRia $autoRia;
  21.     }
  22.     /**
  23.      * @param RouteCollectionInterface $collection
  24.      */
  25.     protected function configureRoutes(RouteCollectionInterface $collection): void
  26.     {
  27.         $collection->add('getModels');
  28.     }
  29.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  30.     {
  31.         $datagridMapper
  32.             ->add('brand_title'null, ['label' => 'Бренд'])
  33.             ->add('model_title'null, ['label' => 'Модель'])
  34.         ;
  35.     }
  36.     /**
  37.      * @param FormMapper $formMapper
  38.      */
  39.     protected function configureFormFields(FormMapper $formMapper): void
  40.     {
  41.         $brands $this->decorateToSelect($this->autoRia->getBrands());
  42.         $fuel $this->decorateToSelect($this->autoRia->getFuelTypes());
  43.         $transmission $this->decorateToSelect($this->autoRia->getTransmissionTypes());
  44.         $models = [];
  45.         $object $this->getSubject();
  46.         if (count($this->getRequest()->request)) {
  47.             $brandId current(current($this->getRequest()->request))['brand_id'];
  48.             $models $this->decorateToSelect($this->autoRia->getModels($brandId));
  49.         } elseif ($object->getBrandId()) {
  50.             $brandId $object->getBrandId();
  51.             $models $this->decorateToSelect($this->autoRia->getModels($brandId));
  52.         }
  53.         $formMapper
  54.             ->with('TradeIn коэффициент', ['class' => 'col-lg-6'])
  55.                 ->add('brand_id'ChoiceType::class, ['label' => 'Бренд''choices' => $brands'attr' => ['class' => 'select-brand-id bootstrap-select selectpicker''data-sonata-select2' => 'false''data-live-search'=> 'true']])
  56.                 ->add('brand_title'HiddenType::class, ['label' => 'Бренд''attr' => ['class' => 'input-brand-title']])
  57.                 ->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']])
  58.                 ->add('model_title',HiddenType::class, ['label' => 'Модель''required' => false'attr' => ['class' => 'input-model-title']])
  59.                 ->add('year_from',null, ['label' => 'Год с''required' => false])
  60.                 ->add('year_to',null, ['label' => 'Год по''required' => false])
  61.                 ->add('mileage_from',null, ['label' => 'Пробег с (тыс. км.)''required' => false])
  62.                 ->add('mileage_to',null, ['label' => 'Пробег по (тыс. км.)''required' => false])
  63.                 ->add('fuel_id',ChoiceType::class, ['label' => 'Топливо''required' => false'choices' => $fuel'attr' => ['class' => 'bootstrap-select selectpicker''data-sonata-select2' => 'false']])
  64.                 ->add('gear_id',ChoiceType::class, ['label' => 'КПП''required' => false'choices' => $transmission'attr' => ['class' => 'bootstrap-select selectpicker''data-sonata-select2' => 'false']])
  65.                 ->add('odd',null, ['label' => 'Коэффициент %, будет вычитаться из цены Auto.Ria'])
  66.             ->end();
  67.     }
  68.     /**
  69.      * @param ListMapper $listMapper
  70.      */
  71.     protected function configureListFields(ListMapper $listMapper): void
  72.     {
  73.         $listMapper->addIdentifier('id')
  74.             ->add('brand_title'null, ['label' => 'Бренд'])
  75.             ->add('model_title'null, ['label' => 'Модель'])
  76.             ->add('year_from',null, ['label' => 'Год с'])
  77.             ->add('year_to'null, ['label' => 'Год по'])
  78.             ->add('mileage_from',null, ['label' => 'Пробег с (тыс. км.)'])
  79.             ->add('mileage_to',null, ['label' => 'Пробег по (тыс. км.)'])
  80.             ->add('odd',null, ['label' => 'Коэффициент'])
  81.             ->add('_action''actions', [
  82.                 'label' => 'Действия',
  83.                 'actions' => [
  84.                     'edit' => [],
  85.                     'delete' => [],
  86.                 ]
  87.             ]);
  88.     }
  89.     private function decorateToSelect($items): array
  90.     {
  91.         $result = [];
  92.         foreach ($items as $item) {
  93.             $result[$item['id']] = $item['title'];
  94.         }
  95.         return array_flip($result);
  96.     }
  97.     protected function configure(): void
  98.     {
  99.         parent::configure(); // TODO: Change the autogenerated stub
  100.         $this->setTemplate('edit''@Admin/admin/vehicle_estimate_odds.html.twig');
  101.     }
  102. }