src/AdminBundle/Admin/LeadsAdmin.php line 18

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