Loading module/Application/src/Application/Entity/Db/Repository/DoctorantRepository.php +17 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application\Entity\Db\Repository; use Application\Entity\Db\Doctorant; use Application\Entity\Db\EcoleDoctorale; use Application\Entity\Db\Etablissement; use Application\Entity\Db\Individu; use Application\Entity\Db\These; use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\Query\Expr\Join; Loading @@ -29,6 +30,22 @@ class DoctorantRepository extends DefaultEntityRepository return $qb->getQuery()->getOneOrNullResult(); } /** * @param Individu $individu * @return Doctorant|null * @throws NonUniqueResultException */ public function findOneByIndividu(Individu $individu) { $qb = $this->createQueryBuilder('d'); $qb ->addSelect('i') ->join('d.individu', 'i', Join::WITH, 'i = :individu') ->setParameter('individu', $individu); return $qb->getQuery()->getOneOrNullResult(); } /** * @param EcoleDoctorale|string $ecoleDoctorale ED ou code structure de l'ED * @param Etablissement|null $etablissement Etablissement éventuel Loading module/Application/src/Application/Entity/UserWrapper.php +1 −1 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ class UserWrapper implements UserInterface return $this->userData->getEduPersonPrincipalName(); case $this->userData instanceof Utilisateur: throw new DomainException("Non applicable!"); throw new DomainException("Les données d'identité de type Utilisateur ne sont pas supportées"); case $this->userData instanceof ShibUser: return $this->userData->getEppn(); Loading module/Application/src/Application/Service/Doctorant/DoctorantService.php +9 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application\Service\Doctorant; use Application\Entity\Db\Doctorant; use Application\Entity\Db\DoctorantCompl; use Application\Entity\Db\Repository\DoctorantRepository; use Application\Entity\Db\Utilisateur; use Application\Entity\UserWrapper; use Application\Service\BaseService; use Application\Service\Etablissement\EtablissementServiceAwareTrait; Loading Loading @@ -62,6 +63,14 @@ class DoctorantService extends BaseService */ public function findOneByUserWrapper(UserWrapper $user) { if ($individu = $user->getIndividu()) { try { return $this->getRepository()->findOneByIndividu($individu); } catch (NonUniqueResultException $e) { throw new RuntimeException("Anomalie: Plusieurs doctorants pour un individu ont été trouvés"); } } $id = $user->getSupannId(); if (! $id) { // throw new RuntimeException("Aucun id supann disponible."); Loading Loading
module/Application/src/Application/Entity/Db/Repository/DoctorantRepository.php +17 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application\Entity\Db\Repository; use Application\Entity\Db\Doctorant; use Application\Entity\Db\EcoleDoctorale; use Application\Entity\Db\Etablissement; use Application\Entity\Db\Individu; use Application\Entity\Db\These; use Doctrine\ORM\NonUniqueResultException; use Doctrine\ORM\Query\Expr\Join; Loading @@ -29,6 +30,22 @@ class DoctorantRepository extends DefaultEntityRepository return $qb->getQuery()->getOneOrNullResult(); } /** * @param Individu $individu * @return Doctorant|null * @throws NonUniqueResultException */ public function findOneByIndividu(Individu $individu) { $qb = $this->createQueryBuilder('d'); $qb ->addSelect('i') ->join('d.individu', 'i', Join::WITH, 'i = :individu') ->setParameter('individu', $individu); return $qb->getQuery()->getOneOrNullResult(); } /** * @param EcoleDoctorale|string $ecoleDoctorale ED ou code structure de l'ED * @param Etablissement|null $etablissement Etablissement éventuel Loading
module/Application/src/Application/Entity/UserWrapper.php +1 −1 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ class UserWrapper implements UserInterface return $this->userData->getEduPersonPrincipalName(); case $this->userData instanceof Utilisateur: throw new DomainException("Non applicable!"); throw new DomainException("Les données d'identité de type Utilisateur ne sont pas supportées"); case $this->userData instanceof ShibUser: return $this->userData->getEppn(); Loading
module/Application/src/Application/Service/Doctorant/DoctorantService.php +9 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application\Service\Doctorant; use Application\Entity\Db\Doctorant; use Application\Entity\Db\DoctorantCompl; use Application\Entity\Db\Repository\DoctorantRepository; use Application\Entity\Db\Utilisateur; use Application\Entity\UserWrapper; use Application\Service\BaseService; use Application\Service\Etablissement\EtablissementServiceAwareTrait; Loading Loading @@ -62,6 +63,14 @@ class DoctorantService extends BaseService */ public function findOneByUserWrapper(UserWrapper $user) { if ($individu = $user->getIndividu()) { try { return $this->getRepository()->findOneByIndividu($individu); } catch (NonUniqueResultException $e) { throw new RuntimeException("Anomalie: Plusieurs doctorants pour un individu ont été trouvés"); } } $id = $user->getSupannId(); if (! $id) { // throw new RuntimeException("Aucun id supann disponible."); Loading