Commit 39eb008e authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Correction nécessaire en cas de suppanid individu null

parent b7879492
Loading
Loading
Loading
Loading
+4 −2
Changes for module/Application/src/Application/Event/UserAuthenticatedEventListener.php: 4 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -77,9 +77,9 @@ class UserAuthenticatedEventListener extends AuthenticatedUserSavedAbstractListe

    /**
     * @param UserWrapper $userWrapper
     * @return Individu
     * @return Individu|null
     */
    private function processIndividu(UserWrapper $userWrapper): Individu
    private function processIndividu(UserWrapper $userWrapper): ?Individu
    {
        $createIndividu = false;
        $etablissementInconnu = $this->etablissementService->getRepository()->fetchEtablissementInconnu();
@@ -119,8 +119,10 @@ class UserAuthenticatedEventListener extends AuthenticatedUserSavedAbstractListe

        // création de l'Individu si besoin et si possible
        if ($createIndividu) {
            if ($userWrapper->getSupannId()) {
                $individu = $this->individuService->createIndividuFromUserWrapperAndEtab($userWrapper, $etablissement);
            }
        }

        return $individu;
    }
+7 −5
Changes for module/Application/src/Application/Service/Individu/IndividuService.php: 7 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -11,6 +11,8 @@ use Application\Service\BaseService;
use Application\Service\Utilisateur\UtilisateurServiceAwareTrait;
use Application\SourceCodeStringHelperAwareTrait;
use Doctrine\ORM\OptimisticLockException;
use Doctrine\ORM\ORMException;
use InvalidArgumentException;
use UnicaenApp\Entity\UserInterface;
use UnicaenApp\Exception\RuntimeException;
use UnicaenLdap\Entity\People;
@@ -75,16 +77,16 @@ class IndividuService extends BaseService
    /**
     * @param UserWrapper $userWrapper
     * @param Etablissement $etablissement
     * @param Utilisateur   $utilisateur   Auteur éventuel de la création
     * @param \Application\Entity\Db\Utilisateur|null $utilisateur Auteur éventuel de la création
     * @return Individu
     */
    public function createIndividuFromUserWrapperAndEtab(UserWrapper $userWrapper,
                                                         Etablissement $etablissement,
                                                         Utilisateur $utilisateur = null)
                                                         Utilisateur $utilisateur = null): ?Individu
    {
        $supannId = $userWrapper->getSupannId();
        if (! $supannId) {
            return null;
            throw new InvalidArgumentException("Impossible de créer un individu si son supannId est vide.");
        }

        $sourceCode = $this->sourceCodeStringHelper->addEtablissementPrefixTo($supannId, $etablissement);
@@ -99,10 +101,10 @@ class IndividuService extends BaseService
        $entity->setSourceCode($sourceCode);
        $entity->setHistoCreateur($utilisateur ?: $this->getAppPseudoUtilisateur());

        $this->getEntityManager()->persist($entity);
        try {
            $this->getEntityManager()->persist($entity);
            $this->getEntityManager()->flush($entity);
        } catch (OptimisticLockException $e) {
        } catch (ORMException $e) {
            throw new RuntimeException("Impossible d'enregistrer l'Individu", null, $e);
        }