From 81ffa22e21fd6de8fda3f687f5bb4e1ebf643bdd Mon Sep 17 00:00:00 2001 From: Jean-Philippe Metivier <jean-philippe.metivier@unicaen.fr> Date: Mon, 18 Feb 2019 15:21:43 +0100 Subject: [PATCH] Correction mineure et ajout de fonction de recherche --- .../Octopus.Entity.Db.Individu.dcm.xml | 3 +++ .../Service/Individu/IndividuService.php | 25 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Octopus/Entity/Db/Mapping/Octopus.Entity.Db.Individu.dcm.xml b/src/Octopus/Entity/Db/Mapping/Octopus.Entity.Db.Individu.dcm.xml index 5527459..ca001cd 100644 --- a/src/Octopus/Entity/Db/Mapping/Octopus.Entity.Db.Individu.dcm.xml +++ b/src/Octopus/Entity/Db/Mapping/Octopus.Entity.Db.Individu.dcm.xml @@ -24,6 +24,9 @@ <field name="cCommuneNaissance" type="string" length="5" column="C_COMMUNE_NAISSANCE" nullable="false"/> <field name="cDeptNaissance" type="string" length="3" column="C_DEPT_NAISSANCE" nullable="false"/> <field name="cPaysNaissance" type="string" length="3" column="C_PAYS_NAISSANCE" nullable="false"/> + <!--<many-to-one target-entity="Octopus\Entity\Db\Pays" field="cPaysNaissance">--> + <!--<join-column name="C_PAYS_NAISSANCE" referenced-column-name="CODE_PAYS" />--> + <!--</many-to-one>--> <field name="cPaysNationalite" type="string" length="3" column="C_PAYS_NATIONALITE" nullable="false"/> <field name="telPersonnelle" type="string" length="20" column="TEL_PERSO" nullable="false"/> <field name="emailPersonnelle" type="string" length="255" column="EMAIL_PERSO" nullable="false"/> diff --git a/src/Octopus/Service/Individu/IndividuService.php b/src/Octopus/Service/Individu/IndividuService.php index 13f84a0..077d647 100644 --- a/src/Octopus/Service/Individu/IndividuService.php +++ b/src/Octopus/Service/Individu/IndividuService.php @@ -4,6 +4,7 @@ namespace Octopus\Service\Individu; use Doctrine\ORM\NonUniqueResultException; use Octopus\Entity\Db\Individu; +use Octopus\Entity\Db\Source; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; @@ -54,7 +55,7 @@ class IndividuService { public function getIndividusByTerm($term, $sourceCode = null) { $qb = $this->getEntityManager()->getRepository(Individu::class)->createQueryBuilder('individu') - ->addSelect('source')->join('individu.source', 'source') + ->addSelect('source')->join('individu.cSource', 'source') ->andWhere('individu.nomUsage LIKE :search') ->setParameter('search', '%'.$term.'%') ->orderBy('individu.nomUsage, individu.prenom') @@ -68,4 +69,26 @@ class IndividuService { $result = $qb->getQuery()->getResult(); return $result; } + + /** + * @param integer $numeroEtudiant + * @return Individu + */ + public function getEtudiantByNumero($numeroEtudiant) + { + $qb = $this->getEntityManager()->getRepository(Individu::class)->createQueryBuilder('individu') + ->addSelect('source')->join('individu.cSource', 'source') + ->andWhere('individu.cEtu = :numero') + ->andWhere('source.cSource = :sourceCode') + ->setParameter('numero', $numeroEtudiant) + ->setParameter('sourceCode', Source::SOURCE_APOGEE) + ; + + try { + $result = $qb->getQuery()->getOneOrNullResult(); + } catch (NonUniqueResultException $e) { + throw new RuntimeException("Plusieurs étudiants partagent le même numéro étudiant [".$numeroEtudiant."].",$e); + } + return $result; + } } \ No newline at end of file -- GitLab