From e933f3e7815d6a1577dfa5552d7119b7125f97cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Fri, 25 Apr 2025 13:10:44 +0200 Subject: [PATCH] Restrict user fields in UserGroupType based on user jobs. Refactored the form to conditionally add 'users' and 'adminUsers' fields only if the UserGroup does not have associated user jobs. This ensures data consistency and adjusts the form behavior dynamically based on the entity state. --- .../ChillMainBundle/Form/UserGroupType.php | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/Bundle/ChillMainBundle/Form/UserGroupType.php b/src/Bundle/ChillMainBundle/Form/UserGroupType.php index 2e3819560..2ab7ea358 100644 --- a/src/Bundle/ChillMainBundle/Form/UserGroupType.php +++ b/src/Bundle/ChillMainBundle/Form/UserGroupType.php @@ -11,6 +11,7 @@ declare(strict_types=1); namespace Chill\MainBundle\Form; +use Chill\MainBundle\Entity\UserGroup; use Chill\MainBundle\Form\Type\PickUserDynamicType; use Chill\MainBundle\Form\Type\TranslatableStringFormType; use Symfony\Component\Form\AbstractType; @@ -23,6 +24,9 @@ class UserGroupType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { + /** @var UserGroup $userGroup */ + $userGroup = $options['data']; + $builder ->add('label', TranslatableStringFormType::class, [ 'label' => 'user_group.Label', @@ -46,20 +50,25 @@ class UserGroupType extends AbstractType 'help' => 'user_group.ExcludeKeyHelp', 'required' => false, 'empty_data' => '', - ]) - ->add('users', PickUserDynamicType::class, [ - 'label' => 'user_group.Users', - 'multiple' => true, - 'required' => false, - 'empty_data' => [], - ]) - ->add('adminUsers', PickUserDynamicType::class, [ - 'label' => 'user_group.adminUsers', - 'multiple' => true, - 'required' => false, - 'empty_data' => [], - 'help' => 'user_group.adminUsersHelp', - ]) - ; + ]); + + if (!$userGroup->hasUserJob()) { + $builder + ->add('users', PickUserDynamicType::class, [ + 'label' => 'user_group.Users', + 'multiple' => true, + 'required' => false, + 'empty_data' => [], + ]) + ->add('adminUsers', PickUserDynamicType::class, [ + 'label' => 'user_group.adminUsers', + 'multiple' => true, + 'required' => false, + 'empty_data' => [], + 'help' => 'user_group.adminUsersHelp', + ]) + ; + } + } }