<?php
namespace AdminBundle\Admin;
use CoreBundle\Component\FormManager;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Sonata\DoctrineORMAdminBundle\Filter\BooleanFilter;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Security\Core\Security;
class LeadsAdmin extends AbstractAdmin
{
protected Security $security;
public function setContainerServices(Security $security): void
{
$this->security = $security;
}
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->remove('create');
$collection->remove('view');
$collection->remove('delete');
$collection->remove('edit');
}
/**
* @param DatagridMapper $datagridMapper
*/
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('type', null, ['label' => 'Тип лида'], ChoiceType::class, [ 'choices' => array_flip(FormManager::getFormTypeName(null,1))])
->add('dealer', null, ['label' => 'Дилер'])
->add('is_preorder', BooleanFilter::class, ['label' => 'Предзаказ'])
->add('vehicle.vin', null, ['label' => 'VIN'])
->add('date_create', 'doctrine_orm_date_range', [
'label' => 'Дата',
'input_type' => 'text',
]
);
}
public function configureQuery($context = 'list'): ProxyQueryInterface
{
$user = $this->security->getUser();
$query = parent::configureQuery($context);
$query->orderBy($query->getRootAliases()[0] .'.id','DESC');
if($user->hasRole('ROLE_SUPER_ADMIN')) {
return $query;
}
$query->andWhere(
$query->expr()->eq($query->getRootAliases()[0] . '.dealer', ':dealer')
);
$query->setParameter('dealer', $user->getDealer());
return $query;
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->addIdentifier('id')
->add('date_create',null, ['label' => 'Дата создания', 'format' => 'd.m.Y H:i'])
->add('vehicle.vin',null, ['label' => 'VIN'])
->add('name',null, ['label' => 'Имя'])
->add('email',null, ['label' => 'Email'])
->add('phone',null, ['label' => 'Телефон'])
->add('typeName',null, ['label' => 'Тип лида'])
->add('domain',null, ['label' => 'Сайт'])
->add('crm_lead_id',null, ['label' => 'ID лида в CRM'])
;
}
}