src/AdminBundle/Admin/DCAutoSite/TestDriveRoutesAdmin.php line 15

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\DCAutoSite;
  3. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  4. use AdminBundle\Admin\BaseAdmin;
  5. use CoreBundle\Entity\Dealer;
  6. use FOS\CKEditorBundle\Form\Type\CKEditorType;
  7. use Sonata\AdminBundle\Datagrid\ListMapper;
  8. use Sonata\AdminBundle\Form\FormMapper;
  9. use Sonata\MediaBundle\Form\Type\MediaType;
  10. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  11. use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
  12. class TestDriveRoutesAdmin extends BaseAdmin
  13. {
  14.     private function getDealer()
  15.     {
  16.         $dealer $this->getUser()->getDealer();
  17.         if (!$dealer) {
  18.             throw new AccessDeniedException();
  19.         }
  20.         return $dealer;
  21.     }
  22.     public function prePersist($object): void
  23.     {
  24.         $dealer $this->getDealer();
  25.         $object->setState((int) $object->getState());
  26.         $object->setDealer($dealer);
  27.     }
  28.     public function preUpdate($object): void
  29.     {
  30.         $dealer $this->getDealer();
  31.         $object->setState((int) $object->getState());
  32.         $object->setDealer($dealer);
  33.         parent::preUpdate($object);
  34.     }
  35.     /**
  36.      * @param FormMapper $formMapper
  37.      */
  38.     protected function configureFormFields(FormMapper $formMapper): void
  39.     {
  40.         /** @var Dealer $dealer */
  41.         $dealer $this->getDealer();
  42.         if ($dealer->getUniqueId() !== 'YAMAHA') {
  43.             $formMapper
  44.                 ->with(' ')
  45.                 ->add('image'MediaType::class, [
  46.                     'label' => 'Зображення',
  47.                     'context' => 'dc_site',
  48.                     'provider' => 'sonata.media.provider.image',
  49.                 ])
  50.                 ->end();
  51.         }
  52.         $formMapper->with('RU', ['class' => 'col-sm-6'])
  53.             ->add('name_ru'null, ['label' => 'Назва (рус.)'])
  54.             ->add('description_ru'CKEditorType::class, [
  55.                 'label' => 'Опис (рос.)',
  56.                 'required' => false,
  57.             ])
  58.             ->end()
  59.             ->with('UA', ['class' => 'col-sm-6'])
  60.             ->add('name_ua'null, ['label' => 'Назва (укр.)'])
  61.             ->add('description_ua'CKEditorType::class, [
  62.                 'label' => 'Опис (укр.)',
  63.                 'required' => false,
  64.             ])
  65.             ->end();
  66.         if ($dealer->getUniqueId() == 'YAMAHA') {
  67.             $formMapper
  68.                 ->with('Параметри маршруту', ['class' => 'col-sm-6'])
  69.                 ->add('state'CheckboxType::class, ['label' => 'Відображати на сайті''required' => false])
  70.                 ->add('price'null, ['label' => 'ціна''required' => false])
  71.                 ->add('time_way'null, ['label' => 'кількість годин''required' => false])
  72.                 ->add('distance_way'null, ['label' => 'відстань''required' => false])
  73.                 ->add('asphalt_way'null, ['label' => '% маршрут по асфальту''required' => false])
  74.                 ->add('offroad_way'null, ['label' => '% маршрут по бездоріжжю''required' => false])
  75.                 ->end()
  76.                 ->with('Зображення маршруту', ['class' => 'col-sm-6'])
  77.                 ->add('image'MediaType::class, [
  78.                     'label' => 'Зображення',
  79.                     'context' => 'dc_site',
  80.                     'provider' => 'sonata.media.provider.image',
  81.                 ])
  82.                 ->end();
  83.         }
  84.     }
  85.     /**
  86.      * @param string $context
  87.      * @return ProxyQueryInterface
  88.      */
  89.     public function configureQuery($context 'list'): ProxyQueryInterface
  90.     {
  91.         $query parent::configureQuery($context);
  92.         $user $this->getUser();
  93.         $dealer $user->getDealer();
  94.         if(!$dealer) {
  95.             throw new \Symfony\Component\Security\Core\Exception\AccessDeniedException();
  96.         }
  97.         $query->andWhere(
  98.             $query->expr()->eq($query->getRootAliases()[0].'.dealer'':dealer')
  99.         );
  100.         $query->setParameter('dealer'$dealer->getId());
  101.         return $query;
  102.     }
  103.     /**
  104.      * @param ListMapper $listMapper
  105.      */
  106.     protected function configureListFields(ListMapper $listMapper): void
  107.     {
  108.         $listMapper
  109.             ->add('id'null, ['label' => 'ID'])
  110.             ->add('name_ru'null, ['label' => 'Название (рус.)'])
  111.             ->add('state','choice', ['label' => 'Відображати на сайті''editable' => true'choices' => [
  112.                 => 'Так',
  113.                 => 'Ні',
  114.             ]])
  115.             ->add('_action','actions', [
  116.                 'label' => 'Действия',
  117.                 'actions' => [
  118.                     'edit' => [],
  119.                 ]
  120.             ])
  121.         ;
  122.     }
  123. }