src/AdminBundle/Admin/ViDiDepartmentAdmin.php line 22

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin;
  3. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  4. use CoreBundle\Entity\ViDiWorker;
  5. use CoreBundle\Model\ViDiDepartmentModel;
  6. use CoreBundle\Model\ViDiWorkerModel;
  7. use Sonata\AdminBundle\Admin\AbstractAdmin;
  8. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  9. use Sonata\AdminBundle\Datagrid\ListMapper;
  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. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  15. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  16. use Symfony\Component\Security\Core\Security;
  17. use Symfony\Component\VarDumper\VarDumper;
  18. class ViDiDepartmentAdmin extends AbstractAdmin
  19. {
  20.     protected Security $security;
  21.     public function setContainerServices(Security $security): void
  22.     {
  23.         $this->security $security;
  24.     }
  25.     public function prePersist($object): void
  26.     {
  27.         $dealer $this->security->getUser()->getDealer();
  28.         $object->setDealer($dealer);
  29.     }
  30.     /**
  31.      * @param RouteCollectionInterface $collection
  32.      */
  33.     protected function configureRoutes(RouteCollectionInterface $collection): void
  34.     {
  35.         $collection->remove('view');
  36.     }
  37.     /**
  38.      * @param DatagridMapper $datagridMapper
  39.      */
  40.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  41.     {
  42.         $datagridMapper->add('id')
  43.             ->add('dealer'null, ['label' => 'Дилерский центр'])
  44.         ;
  45.     }
  46.     /**
  47.      * @param string $context
  48.      * @return ProxyQueryInterface
  49.      */
  50.     public function configureQuery($context 'list'): ProxyQueryInterface
  51.     {
  52.         $user $this->security->getUser();
  53.         $dealer $user->getDealer();
  54.         $query parent::configureQuery($context);
  55.         $query->andWhere(
  56.             $query->expr()->eq($query->getRootAliases()[0] . '.dealer'':dealer')
  57.         );
  58.         $query->setParameter('dealer'$dealer);
  59.         return $query;
  60.     }
  61.     /**
  62.      * @param FormMapper $formMapper
  63.      */
  64.     protected function configureFormFields(FormMapper $formMapper): void
  65.     {
  66.         $formMapper
  67.             ->with(' ', ['class' => 'col-lg-6'])
  68.                 ->add('type'ChoiceType::class, ['label' => 'Тип отдела','choices' => array_flip(ViDiDepartmentModel::getDepartments())])
  69.                 ->add('title_ru'null, ['label' => 'Публичное название RU'])
  70.                 ->add('title_ua'null, ['label' => 'Публичное название UA'])
  71.                 ->add('email'null, ['label' => 'E-mail'])
  72.                 ->add('hidden_email'null, ['label' => 'Дополнительный E-mail'])
  73.                 ->add('phone'null, ['label' => 'Телефон'])
  74.                 ->add('phone_internal'null, ['label' => 'Телефон (внутренний)'])
  75.                 ->add('priority'null, ['label' => 'Приоритет'])
  76.             ->end()
  77.         ;
  78.     }
  79.     /**
  80.      * @param ListMapper $listMapper
  81.      */
  82.     protected function configureListFields(ListMapper $listMapper): void
  83.     {
  84.         $listMapper->addIdentifier('id')
  85.             ->add('type'ChoiceType::class, ['label' => 'Тип отдела''choices' => ViDiDepartmentModel::getDepartments()])
  86.             ->add('title_ru'null, ['label' => 'Название RU'])
  87.             ->add('title_ua'null, ['label' => 'Название UA'])
  88.             ->add('email'null, ['label' => 'E-mail'])
  89.             ->add('phone'null, ['label' => 'Телефон'])
  90.             ->add('priority'null, ['label' => 'Приоритет'])
  91.             ->add('_action''actions', [
  92.                 'label' => 'Действия',
  93.                 'actions' => [
  94.                     'edit' => [],
  95.                 ]
  96.             ])
  97.         ;
  98.     }
  99. }