src/AdminBundle/Admin/DCAutoSite/TestDriveAdmin.php line 17

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\DCAutoSite;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use AdminBundle\AdminException;
  5. use CoreBundle\Entity\Vehicles\Vehicle;
  6. use DcSiteBundle\Entity\TestDriveRoutes;
  7. use Doctrine\ORM\QueryBuilder;
  8. use Sonata\AdminBundle\Datagrid\ListMapper;
  9. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  10. use Sonata\AdminBundle\Form\FormMapper;
  11. use Sonata\AdminBundle\Form\Type\ModelType;
  12. use Sonata\AdminBundle\Route\RouteCollection;
  13. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  14. class TestDriveAdmin extends BaseAdmin
  15. {
  16.     /**
  17.      * @var string
  18.      */
  19.     protected $baseRouteName 'test-drive';
  20.     /**
  21.      * @var string
  22.      */
  23.     protected $baseRoutePattern 'dcsite/test-drive';
  24.     public function preUpdate($object): void
  25.     {
  26.         $object->setIsManual(1);
  27.         parent::preUpdate($object);
  28.     }
  29.     /**
  30.      * @param string $context
  31.      * @return QueryBuilder|ProxyQueryInterface
  32.      * @throws AdminException
  33.      */
  34.     public function configureQuery($context 'list'): ProxyQueryInterface
  35.     {
  36.         /**
  37.          * @var QueryBuilder $query
  38.          */
  39.         $query parent::configureQuery($context);
  40.         $query->andWhere($query->getRootAliases()[0] . '.dealer = :dealer');
  41.         $query->setParameter('dealer'$this->getUserDealer()->getId());
  42.         return $query;
  43.     }
  44.     /**
  45.      * @param RouteCollectionInterface $collection
  46.      * @return void
  47.      */
  48.     protected function configureRoutes(RouteCollectionInterface $collection): void
  49.     {
  50.         $collection->remove('delete');
  51.         $collection->remove('create');
  52.     }
  53.     /**
  54.      * @param ListMapper $list
  55.      * @return void
  56.      */
  57.     protected function configureListFields(ListMapper $list): void
  58.     {
  59.         $list
  60.             ->addIdentifier('id'null, ['label' => 'Ід'])
  61.             ->add('name'null, ['label' => 'Назва'])
  62.             ->add('crm_model_name'null, ['label' => 'Назва моделі'])
  63.             ->add('_action''actions', [
  64.                 'label' => 'Действия',
  65.                 'actions' => [
  66.                     'edit' => []
  67.                 ]
  68.             ]);
  69.     }
  70.     /**
  71.      * @param FormMapper $formMapper
  72.      * @return void
  73.      */
  74.     protected function configureFormFields(FormMapper $form): void
  75.     {
  76.         $query $this->getModelManager()
  77.             ->getEntityManager(Vehicle::class)
  78.             ->createQueryBuilder('v')
  79.             ->select('v')
  80.             ->from(Vehicle::class,'v')
  81.             ->where('v.dealer = :dealer')
  82.             ->andWhere('v.is_used = 0')
  83.             ->setParameter('dealer'$this->getUserDealer());
  84.         $queryTestDriveRoutes $this->getModelManager()
  85.             ->getEntityManager(TestDriveRoutes::class)
  86.             ->createQueryBuilder('tdr')
  87.             ->select('tdr')
  88.             ->from(TestDriveRoutes::class,'tdr')
  89.             ->where('tdr.dealer = :dealer')
  90.             ->setParameter('dealer'$this->getUserDealer());
  91.         $form
  92.             ->add('name'null, [
  93.                 'label' => 'Назва',
  94.                 'required' => true
  95.             ])
  96.             ->add('crm_model_name'null, [
  97.                 'label' => 'Назва моделі',
  98.                 'required' => true
  99.             ])
  100.             ->add('vehicle'ModelType::class, [
  101.                 'label' => 'Назва авто',
  102.                 'required' => true,
  103.                 'btn_add' => false,
  104.                 'query' => $query
  105.             ], [
  106.                 'admin_code' => 'admin.vehicles.passenger_vehicle'
  107.             ])
  108.             ->end()
  109.             ->with('Доступные маршруты')
  110.             ->add('test_drive_routes'ModelType::class, [
  111.                 'label' => 'Маршруты',
  112.                 'query' => $queryTestDriveRoutes,
  113.                 'btn_add' => false,
  114.                 'required' => false,
  115.                 'multiple' => true,
  116.             ])
  117.             ->end()
  118.         ;
  119.     }
  120. }