src/AdminBundle/Admin/LeadsAdmin.php line 16

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin;
  3. use CoreBundle\Component\FormManager;
  4. use Sonata\AdminBundle\Admin\AbstractAdmin;
  5. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  8. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  9. use Sonata\DoctrineORMAdminBundle\Filter\BooleanFilter;
  10. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  11. use Symfony\Component\Security\Core\Security;
  12. class LeadsAdmin extends AbstractAdmin
  13. {
  14.     protected Security $security;
  15.     public function setContainerServices(Security $security): void
  16.     {
  17.         $this->security $security;
  18.     }
  19.     protected function configureRoutes(RouteCollectionInterface $collection): void
  20.     {
  21.         $collection->remove('create');
  22.         $collection->remove('view');
  23.         $collection->remove('delete');
  24.         $collection->remove('edit');
  25.     }
  26.     /**
  27.      * @param DatagridMapper $datagridMapper
  28.      */
  29.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  30.     {
  31.         $datagridMapper
  32.             ->add('type'null, ['label' => 'Тип лида'], ChoiceType::class, [ 'choices' => array_flip(FormManager::getFormTypeName(null,1))])
  33.             ->add('dealer'null, ['label' => 'Дилер'])
  34.             ->add('is_preorder'BooleanFilter::class, ['label' => 'Предзаказ'])
  35.             ->add('vehicle.vin'null, ['label' => 'VIN'])
  36.             ->add('date_create''doctrine_orm_date_range',  [
  37.                 'label' => 'Дата',
  38.                 'input_type' => 'text',
  39.                 ]
  40.             );
  41.     }
  42.     public function configureQuery($context 'list'): ProxyQueryInterface
  43.     {
  44.         $user $this->security->getUser();
  45.         $query parent::configureQuery($context);
  46.         $query->orderBy($query->getRootAliases()[0] .'.id','DESC');
  47.         if($user->hasRole('ROLE_SUPER_ADMIN')) {
  48.             return  $query;
  49.         }
  50.         $query->andWhere(
  51.             $query->expr()->eq($query->getRootAliases()[0] . '.dealer'':dealer')
  52.         );
  53.         $query->setParameter('dealer'$user->getDealer());
  54.         return $query;
  55.     }
  56.     protected function configureListFields(ListMapper $listMapper): void
  57.     {
  58.         $listMapper->addIdentifier('id')
  59.             ->add('date_create',null, ['label' => 'Дата создания''format' => 'd.m.Y H:i'])
  60.             ->add('vehicle.vin',null, ['label' => 'VIN'])
  61.             ->add('name',null, ['label' => 'Имя'])
  62.             ->add('email',null, ['label' => 'Email'])
  63.             ->add('phone',null, ['label' => 'Телефон'])
  64.             ->add('typeName',null, ['label' => 'Тип лида'])
  65.             ->add('domain',null, ['label' => 'Сайт'])
  66.             ->add('crm_lead_id',null, ['label' => 'ID лида в CRM'])
  67.         ;
  68.     }
  69. }