src/AdminBundle/Admin/SubAutoSite/WorkerAdmin.php line 20

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\SubAutoSite;
  3. use ImporterBundle\Entity\Department;
  4. use ImporterBundle\Entity\Worker;
  5. use ImporterBundle\Model\WorkerModel;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  8. use Sonata\AdminBundle\Exception\ModelManagerException;
  9. use Sonata\AdminBundle\Form\FormMapper;
  10. use Sonata\AdminBundle\Form\Type\ModelType;
  11. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  12. use Sonata\MediaBundle\Form\Type\MediaType;
  13. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  14. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  15. class WorkerAdmin extends BaseImporterAdmin
  16. {
  17.     /**
  18.      * @param $object
  19.      */
  20.     public function prePersist($object): void
  21.     {
  22.         $dealer $this->security->getUser()->getSubDealer();
  23.         $object->setDealer($dealer);
  24.     }
  25.     /**
  26.      * @param Worker $object
  27.      * @throws ModelManagerException
  28.      */
  29.     public function postPersist($object): void
  30.     {
  31.        /* $token = 'token:'.md5($object->getId().'_'.time().'secret_salt_vidi_dfR$%@cfdgvds_'.uniqid());
  32.         $object->setToken($token);
  33.         $this->getModelManager()->update($object);
  34.         $this->sendToken($object);*/
  35.     }
  36.     /**
  37.      * @param RouteCollectionInterface $collection
  38.      */
  39.     protected function configureRoutes(RouteCollectionInterface $collection): void
  40.     {
  41.         $collection->remove('view');
  42.     }
  43.     /**
  44.      * @param string $context
  45.      * @return ProxyQueryInterface
  46.      */
  47.     public function configureQuery($context 'list'): ProxyQueryInterface
  48.     {
  49.         $user $this->security->getUser();
  50.         $dealer $user->getSubDealer();
  51.         $query parent::configureQuery($context);
  52.         $query->andWhere(
  53.             $query->expr()->eq($query->getRootAliases()[0] . '.dealer'':dealer')
  54.         );
  55.         $query->setParameter('dealer'$dealer);
  56.         return $query;
  57.     }
  58.     /**
  59.      * @param FormMapper $formMapper
  60.      */
  61.     protected function configureFormFields(FormMapper $formMapper): void
  62.     {
  63.         $dealer $this->security->getUser()->getSubDealer();
  64.         $queryBuilder $this->getModelManager()
  65.             ->getEntityManager(Department::class)
  66.             ->createQueryBuilder('d')
  67.             ->select('d')
  68.             ->from(Department::class, 'd')
  69.             ->where('d.dealer = :dealer')
  70.             ->setParameter('dealer'$dealer);
  71.         $formMapper
  72.             ->with('Сотрудник', ['class' => 'col-lg-6'])
  73.                 ->add('callback_available'CheckboxType::class, [
  74.                     'label' => 'Отвечает на обратные звонки?',
  75.                     'required' => false,
  76.                 ])
  77.                 ->add('photo'MediaType::class, [
  78.                     'label' => 'Фото',
  79.                     'required' => false,
  80.                     'provider' => 'sonata.media.provider.image',
  81.                     'context'  => 'dc_site'
  82.                 ])
  83.                 ->add('name_ru'null, ['label' => 'ФИО'])
  84.                 ->add('name_ua'null, ['label' => 'ПIБ'])
  85.                 ->add('department'ModelType::class, ['query' => $queryBuilder'label' => 'Отдел'])
  86.                 ->add('position'ChoiceType::class, ['label' => 'Должность''choices' => array_flip(WorkerModel::getPositions())])
  87.                 ->add('email'null, ['label' => 'E-mail'])
  88.                 ->add('phone_mobile'null, ['label' => 'Мобильный телефон'])
  89.                 ->add('phone_internal'null, ['label' => 'Внутренний телефон'])
  90.             ->end()
  91.         ;
  92.     }
  93.     /**
  94.      * @param ListMapper $listMapper
  95.      */
  96.     protected function configureListFields(ListMapper $listMapper): void
  97.     {
  98.         $listMapper->addIdentifier('id')
  99.             ->add('name',null, ['label' => 'Имя'])
  100.             ->add('email',null, ['label' => 'E-mail'])
  101.             ->add('position','choice', ['label' => 'Должность''choices' => WorkerModel::getPositions()])
  102.             ->add('dealer',null, ['label' => 'Дилерский центр''admin_code' => 'admin.sub.contact'])
  103.             ->add('telegram_id',null, ['label' => 'Telegram ID'])
  104.             ->add('callback_available',null, ['label' => 'Отвечает на обратные?'])
  105.             ->add('department'null, ['label' => 'Отдел'])
  106.             ->add('_action''actions', [
  107.                 'label' => 'Действия',
  108.                 'actions' => [
  109.                     'edit' => [],
  110.                     'delete' => [],
  111.                 ]
  112.             ])
  113.         ;
  114.     }
  115. }