← Back
Editing: AgencySupervisorCrudController.php
<?php namespace App\Controller\Admin\User; use App\Entity\User; use App\Enum\UserRole; use App\Form\EmailAliasType; use Doctrine\ORM\QueryBuilder; use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection; use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection; use EasyCorp\Bundle\EasyAdminBundle\Config\Action; use EasyCorp\Bundle\EasyAdminBundle\Config\Actions; use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; use EasyCorp\Bundle\EasyAdminBundle\Config\Filters; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto; use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto; use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField; use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField; use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField; use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField; use EasyCorp\Bundle\EasyAdminBundle\Field\IdField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use Symfony\Component\Form\Extension\Core\Type\PasswordType; class AgencySupervisorCrudController extends AbstractCrudController { public static function getEntityFqcn(): string { return User::class; } public function configureActions(Actions $actions): Actions { $impersonate = Action::new('impersonate')->linkToUrl(static function (User $user) { return sprintf('/?_switch_user=%s', $user->getEmail()); }); return $actions->add(Crud::PAGE_INDEX, $impersonate); } public function configureFilters(Filters $filters): Filters { return $filters ->add('email') ->add('organization') ->add('agency') ->add('roles'); } public function configureCrud(Crud $crud): Crud { return $crud // the visible title at the top of the page and the content of the <title> element // it can include these placeholders: %entity_id%, %entity_label_singular%, %entity_label_plural% ->setPageTitle('index', 'Manager d\'agences') ->setPageTitle('new', 'Créer superviseur d\'agences') ->setPageTitle('edit', 'Modifier superviseur d\'agences'); } public function configureFields(string $pageName): iterable { return [ IdField::new('id')->hideOnForm(), AssociationField::new('agency')->setRequired(true), TextField::new('username')->hideOnIndex(), TextField::new('email'), TextField::new('plainPassword')->setFormType(PasswordType::class)->onlyWhenUpdating(), TextField::new('nom'), TextField::new('prenom'), ChoiceField::new('roles')->setChoices(UserRole::choices())->allowMultipleChoices(), AssociationField::new('managerAddresses') ->autocomplete() ->setFormTypeOptionIfNotSet('by_reference', false) ->setLabel('Peut gérer les adresses') ->hideOnIndex(), AssociationField::new('addressesAccess')->autocomplete()->setLabel( 'Peut faire des contrôles aux adresses' )->hideOnIndex(), CollectionField::new('emailAliases') ->hideOnIndex() ->setFormTypeOptions([ 'entry_type' => EmailAliasType::class, 'entry_options' => ['label' => false], 'allow_add' => true, 'prototype' => true, 'allow_delete' => true, 'by_reference' => false, ]), AssociationField::new('solutions')->hideOnIndex(), BooleanField::new('isActive'), DateTimeField::new('updatedAt')->setValue(new \DateTime()), ]; } public function createIndexQueryBuilder( SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters ): QueryBuilder { $response = parent::createIndexQueryBuilder( $searchDto, $entityDto, $fields, $filters ); $response->andWhere('entity.roles LIKE :roleSupervisor') ->setParameter('roleSupervisor', '%ROLE_SUPERVISOR%'); return $response; } }
Save File
Cancel