Allow the selection of multiple centers to create multiple groupcenters at once

This commit is contained in:
Julie Lenaerts 2024-11-07 18:49:07 +01:00
parent 63fc4f1089
commit 0f1604817b
2 changed files with 23 additions and 20 deletions

View File

@ -64,10 +64,19 @@ class UserController extends CRUDController
$form->handleRequest($request); $form->handleRequest($request);
if ($form->isValid()) { if ($form->isValid()) {
$groupCenter = $this->getPersistedGroupCenter(
$form[self::FORM_GROUP_CENTER_COMPOSED]->getData() $formData = $form[self::FORM_GROUP_CENTER_COMPOSED]->getData();
); $selectedCenters = $formData['center'];
$user->addGroupCenter($groupCenter);
foreach ($selectedCenters as $center) {
$groupCenter = new GroupCenter();
$groupCenter->setCenter($center);
$groupCenter->setPermissionsGroup($formData['permissionsgroup']);
$user->addGroupCenter($groupCenter);
$em->persist($groupCenter);
}
if (0 === $this->validator->validate($user)->count()) { if (0 === $this->validator->validate($user)->count()) {
$em->flush(); $em->flush();

View File

@ -13,36 +13,30 @@ namespace Chill\MainBundle\Form\Type;
use Chill\MainBundle\Entity\Center; use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Entity\PermissionsGroup; use Chill\MainBundle\Entity\PermissionsGroup;
use Doctrine\ORM\EntityRepository; use Chill\MainBundle\Repository\CenterRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ComposedGroupCenterType extends AbstractType class ComposedGroupCenterType extends AbstractType
{ {
public function __construct(private readonly CenterRepository $centerRepository) {}
public function buildForm(FormBuilderInterface $builder, array $options) public function buildForm(FormBuilderInterface $builder, array $options)
{ {
$centers = $this->centerRepository->findActive();
$builder->add('permissionsgroup', EntityType::class, [ $builder->add('permissionsgroup', EntityType::class, [
'class' => PermissionsGroup::class, 'class' => PermissionsGroup::class,
'choice_label' => static fn (PermissionsGroup $group) => $group->getName(), 'choice_label' => static fn (PermissionsGroup $group) => $group->getName(),
])->add('center', EntityType::class, [ ])->add('center', ChoiceType::class, [
'class' => Center::class, 'choices' => $centers,
'query_builder' => static function (EntityRepository $er) { 'choice_label' => fn (Center $center) => $center->getName(),
$qb = $er->createQueryBuilder('c'); 'multiple' => true,
$qb->where($qb->expr()->eq('c.isActive', 'TRUE'))
->orderBy('c.name', 'ASC');
return $qb;
},
]); ]);
} }
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefault('data_class', \Chill\MainBundle\Entity\GroupCenter::class);
}
public function getBlockPrefix() public function getBlockPrefix()
{ {
return 'composed_groupcenter'; return 'composed_groupcenter';