src/AdminBundle/Admin/Filters/VehicleFilterAdmin.php line 19

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Filters;
  3. use DateTime;
  4. use AdminBundle\Admin\BaseAdmin;
  5. use CoreBundle\Model\Api\AutoRia\AutoRia;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  8. use Sonata\AdminBundle\Form\FormMapper;
  9. use CoreBundle\Entity\Brand;
  10. use Sonata\AdminBundle\Form\Type\ModelType;
  11. use Sonata\AdminBundle\Show\ShowMapper;
  12. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  13. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  14. use Symfony\Component\Form\Extension\Core\Type\DateType;
  15. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  16. class VehicleFilterAdmin extends BaseAdmin
  17. {
  18.     public function configureQuery($context 'list'): ProxyQueryInterface
  19.     {
  20.         $user $this->getUser();
  21.         $query parent::configureQuery($context);
  22.         $dealer $user->getDealer();
  23.         if(!$dealer) {
  24.             throw new AccessDeniedException();
  25.         }
  26.         $query->andWhere(
  27.             $query->expr()->eq($query->getRootAliases()[0].'.dealer'':dealer')
  28.         );
  29.         $query->setParameter('dealer'$dealer->getId());
  30.         return $query;
  31.     }
  32.     protected function configureListFields(ListMapper $listMapper): void
  33.     {
  34.         $listMapper->addIdentifier('id')
  35.             ->add('brand.name',null, [
  36.                 'label' => 'Бренд',
  37.                 'sortable' => true,
  38.             ])
  39.             ->add('dealer.id',null, [
  40.                 'label' => 'Дилер Id',
  41.                 'sortable' => true,
  42.             ])
  43.             ->add('year_from',null, ['label' => 'Рік з'])
  44.             ->add('year_to'null, ['label' => 'Рік по'])
  45.             ->add('mileage_from'null, ['label' => 'Пробіг з'])
  46.             ->add('mileage_to'null, ['label' => 'Пробіг по'])
  47.             ->add('region'null, ['label' => 'Район'])
  48.             ->add('count'null, ['label' => 'Кількість записів'])
  49.             ->add('_action''actions', [
  50.                 'label' => 'Дія',
  51.                 'actions' => [
  52.                     'edit' => [],
  53.                 ]
  54.             ])
  55.         ;
  56.     }
  57.     protected function configureShowFields(ShowMapper $show): void
  58.     {
  59.         $show
  60.             ->add('brand',null, ['label' => 'Message'])
  61.             ->add('year_from',null, ['label' => 'Context'])
  62.             ->add('year_to',null, ['label' => 'Level'])
  63.             ->add('mileage_from',null, ['label' => 'Level name'])
  64.             ->add('mileage_to',null, ['label' => 'Domain'])
  65.             ->add('region',null, ['label' => 'Created At'])
  66.             ->add('count',null, ['label' => 'Created At']);
  67.     }
  68.     protected function configureFormFields(FormMapper $formMapper): void
  69.     {
  70.         $fuelTypes $this->autoRia->getFuelTypes();
  71.         $transmissionTypes $this->autoRia->getTransmissionTypes();
  72.         $queryBuilder $this->getModelManager()
  73.             ->getEntityManager(Brand::class)
  74.             ->createQueryBuilder('b')
  75.             ->select('b')
  76.             ->from('CoreBundle:Brand''b');
  77.         $formMapper
  78.             ->with('Контент', ['class' => 'col-lg-6']);
  79.         if($this->getSubject()){
  80.             $isNew = !$this->getSubject()->getId();
  81.         } else {
  82.             $isNew true;
  83.         }
  84.         $formMapper->add('brand'ModelType::class, ['label' => 'Бренд''query' => $queryBuilder]);
  85.         $formMapper->add('model'ChoiceType::class, ['label' => 'Модель''multiple' => true'choices' => []]);
  86.         $formMapper->add('year_from',null, ['label' => 'Рік з'])
  87.             ->add('year_to'null, ['label' => 'Рік по']);
  88.         $formMapper->add('mileage_from',null, ['label' => 'Пробіг з в тис.'])
  89.             ->add('mileage_to'null, ['label' => 'Пробіг по в тис.']);
  90.         $formMapper->add('price_from',null, ['label' => 'Ціна з в USD'])
  91.             ->add('price_to'null, ['label' => 'Ціна по в USD']);
  92.         $formMapper->add('fuel_type'ChoiceType::class, ['label' => 'Тип палива''multiple' => true'choices' => array_column($fuelTypes'id''title')]);
  93.         $formMapper->add('type_drive'ChoiceType::class, ['label' => 'Тип приводу''multiple' => true'choices' => array_column($transmissionTypes'id''title')]);
  94.         $formMapper->add('region'ChoiceType::class, ['label' => 'Район''choices' => array_flip(AutoRia::getState())]);
  95.         $formMapper->add('city'ChoiceType::class, ['label' => 'Город''multiple' => true'choices' => []]);
  96.         $formMapper->add('count',null, ['label' => 'Кількість записів']);
  97.         $data = [
  98.             'label' => 'Відбирати об\'яви з дати',
  99.             'widget' => 'single_text',
  100.         ];
  101.         if($isNew) {
  102.             $data['data'] = new DateTime();
  103.         }
  104.         $formMapper->add('from_date'DateType::class, $data);
  105.         $formMapper->add(
  106.             'is_usa',
  107.             CheckboxType::class,
  108.             ['label' => 'Active''required' => false]
  109.         );
  110.         $formMapper->add(
  111.             'was_accident',
  112.             CheckboxType::class,
  113.             ['label' => 'Active''required' => false]
  114.         );
  115.         $formMapper->add(
  116.             'is_commercial',
  117.             CheckboxType::class,
  118.             ['label' => 'Active''required' => false]
  119.         );
  120.         $formMapper->add(
  121.         'state',
  122.         CheckboxType::class,
  123.         ['label' => 'Active''required' => false]
  124.     );
  125.         $formMapper->end();
  126.     }
  127.     protected function configure(): void
  128.     {
  129.         parent::configure(); // TODO: Change the autogenerated stub
  130.         $this->setTemplate('edit''@Admin\CRUD\VehicleFilter\vehicle-filter-create_edit.html.twig');
  131.     }
  132. }