Fix the logic of adding a permission group to avoid duplicates being made

This commit is contained in:
Julie Lenaerts 2024-11-20 12:43:50 +01:00
parent 0f1604817b
commit b327f65ef8

View File

@ -12,7 +12,9 @@ declare(strict_types=1);
namespace Chill\MainBundle\Controller;
use Chill\MainBundle\CRUD\Controller\CRUDController;
use Chill\MainBundle\Entity\Center;
use Chill\MainBundle\Entity\GroupCenter;
use Chill\MainBundle\Entity\PermissionsGroup;
use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Form\Type\ComposedGroupCenterType;
use Chill\MainBundle\Form\UserCurrentLocationType;
@ -69,13 +71,8 @@ class UserController extends CRUDController
$selectedCenters = $formData['center'];
foreach ($selectedCenters as $center) {
$groupCenter = new GroupCenter();
$groupCenter->setCenter($center);
$groupCenter->setPermissionsGroup($formData['permissionsgroup']);
$groupCenter = $this->getPersistedGroupCenter($center, $formData['permissionsgroup']);
$user->addGroupCenter($groupCenter);
$em->persist($groupCenter);
}
if (0 === $this->validator->validate($user)->count()) {
@ -428,17 +425,21 @@ class UserController extends CRUDController
}
}
private function getPersistedGroupCenter(GroupCenter $groupCenter)
private function getPersistedGroupCenter(Center $center, PermissionsGroup $permissionsGroup)
{
$em = $this->managerRegistry->getManager();
$groupCenterManaged = $em->getRepository(GroupCenter::class)
->findOneBy([
'center' => $groupCenter->getCenter(),
'permissionsGroup' => $groupCenter->getPermissionsGroup(),
'center' => $center,
'permissionsGroup' => $permissionsGroup,
]);
if (!$groupCenterManaged) {
$groupCenter = new GroupCenter();
$groupCenter->setCenter($center);
$groupCenter->setPermissionsGroup($permissionsGroup);
$em->persist($groupCenter);
return $groupCenter;