Loading composer.lock +12 −5 Changes for composer.lock: 12 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "fef08d5a47ca50a2db2edde3d96e2721", "content-hash": "f1bbbde786189a5ec236c509436c1fe2", "packages": [ { "name": "apereo/phpcas", Loading Loading @@ -13340,11 +13340,11 @@ }, { "name": "unicaen/sygal-api", "version": "dev-master", "version": "dev-feature_uuid_apprenant", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/sygal-api.git", "reference": "92bedae6f8949bdf8b782ff61599c95c391abe95" "reference": "3d5078522044974d242d3c50365172d2eff29708" }, "require": { "guzzlehttp/guzzle": "^7.0", Loading @@ -13359,7 +13359,6 @@ "require-dev": { "phpunit/phpunit": "^8.0" }, "default-branch": true, "type": "module", "autoload": { "psr-4": { Loading @@ -13369,8 +13368,16 @@ "./Module.php" ] }, "scripts": { "post-install-cmd": [ "mkdir -p public/unicaen && cp -r vendor/unicaen/sygal-api/asset/public/unicaen public/" ], "post-update-cmd": [ "mkdir -p public/unicaen && cp -r vendor/unicaen/sygal-api/asset/public/unicaen public/" ] }, "description": "API SyGAL", "time": "2026-08-27T12:52:37+00:00" "time": "2026-10-16T13:07:28+00:00" }, { "name": "unicaen/utilisateur", Loading doc/release-notes/feature_uuid_apprenant/01_inscr_admin_apprenant.sql 0 → 100644 +71 −0 Changes for doc/release-notes/feature_uuid_apprenant/01_inscr_admin_apprenant.sql: 71 added lines, 0 removed lines. Original line number Diff line number Diff line -- -- Import des Inscriptions administratives envoyées par Pégase. -- -- Nouvelles colonnes : -- - liste_ine_secondaire -- - uuid_apprenant -- - mail_institutionnel -- alter table inscription_administrative_apprenant add column liste_ine_secondaire varchar(512); alter table inscription_administrative_apprenant add column uuid_apprenant varchar(128); alter table inscription_administrative_apprenant add column mail_institutionnel varchar(128); alter table tmp_inscription_administrative_apprenant add column liste_ine_secondaire varchar(512); alter table tmp_inscription_administrative_apprenant add column uuid_apprenant varchar(128); alter table tmp_inscription_administrative_apprenant add column mail_institutionnel varchar(128); drop view if exists v_diff_inscription_administrative_apprenant; drop view src_inscription_administrative_apprenant; create or replace view src_inscription_administrative_apprenant (id, histo_creation, source_code, source_id, inscription_administrative_id, code, ine, liste_ine_secondaire, uuid_apprenant, mail_institutionnel, deuxieme_prenom, genre, mail_personnel, mail_urgence, nom_de_naissance, nom_usuel, prenom, prenom_usage, telephone_personnel, telephone_urgence, troisieme_prenom, commune_de_naissance, commune_de_naissance_etranger, date_d_obtention_de_la_deuxieme_nationalite, date_de_naissance, deuxieme_nationalite, libelle_commune_de_naissance, libelle_deuxieme_nationalite, libelle_nationalite, libelle_pays_de_naissance, nationalite, pays_de_naissance, haystack) as SELECT NULL::bigint AS id, tmp.histo_creation, tmp.source_code, src.id AS source_id, ia.id AS inscription_administrative_id, tmp.code, tmp.ine, tmp.liste_ine_secondaire, tmp.uuid_apprenant, tmp.mail_institutionnel, tmp.deuxieme_prenom, tmp.genre, tmp.mail_personnel, tmp.mail_urgence, tmp.nom_de_naissance, tmp.nom_usuel, tmp.prenom, tmp.prenom_usage, tmp.telephone_personnel, tmp.telephone_urgence, tmp.troisieme_prenom, tmp.commune_de_naissance, tmp.commune_de_naissance_etranger, tmp.date_d_obtention_de_la_deuxieme_nationalite, tmp.date_de_naissance, tmp.deuxieme_nationalite, tmp.libelle_commune_de_naissance, tmp.libelle_deuxieme_nationalite, tmp.libelle_nationalite, tmp.libelle_pays_de_naissance, tmp.nationalite, tmp.pays_de_naissance, btrim(str_reduce(array_to_string(ARRAY[tmp.code, tmp.ine, tmp.nom_de_naissance, tmp.nom_usuel, tmp.prenom, tmp.deuxieme_prenom, tmp.prenom_usage], ' '::text))) AS haystack FROM tmp_inscription_administrative_apprenant tmp JOIN source src ON src.id = tmp.source_id LEFT JOIN inscription_administrative ia ON ia.source_code::text = tmp.inscription_administrative_id::text; alter table doctorant add column liste_ine_secondaire varchar(512); alter table doctorant add column uuid_apprenant_in_source varchar(128); --alter table individu rename column email to email_institutionnel; -- todo : faire plus tard ? module/Doctorant/src/Doctorant/Entity/Db/Repository/DoctorantRepository.php +50 −1 Changes for module/Doctorant/src/Doctorant/Entity/Db/Repository/DoctorantRepository.php: 50 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -40,6 +40,28 @@ class DoctorantRepository extends DefaultEntityRepository } } /** * @throws \Doctorant\Entity\Db\Repository\Exception\NonUniqueDoctorantException */ public function findOneByUuidApprenant(string $uuidApprenant): ?Doctorant { $qb = $this->createQueryBuilder('t'); $qb ->join('t.individu', 'i')->addSelect('i') ->where('t.uuidApprenantInSource = :uuidApprenant') ->andWhere('t.histoDestruction is null') ->setParameter('uuidApprenant', $uuidApprenant); try { return $qb->getQuery()->getOneOrNullResult(); } catch (NonUniqueResultException $e) { throw new NonUniqueDoctorantException( "Anomalie : plusieurs doctorants (non historisés) ont été trouvés avec le même UUID apprenant '$uuidApprenant'.", NonUniqueDoctorantException::CODE_UUID_APPRENANT, ); } } /** * @throws \Doctorant\Entity\Db\Repository\Exception\NonUniqueDoctorantException */ Loading @@ -65,7 +87,7 @@ class DoctorantRepository extends DefaultEntityRepository /** * @throws \Doctorant\Entity\Db\Repository\Exception\NonUniqueDoctorantException */ public function findOneByIne(string $ine): ?Doctorant public function findOneByIneMaitre(string $ine): ?Doctorant { $qb = $this->createQueryBuilder('t'); $qb Loading @@ -84,6 +106,33 @@ class DoctorantRepository extends DefaultEntityRepository } } /** * @throws \Doctorant\Entity\Db\Repository\Exception\NonUniqueDoctorantException */ public function findOneByIneSecondaire(array|string $ineSecondaire): ?Doctorant { $inesSecondaires = (array)$ineSecondaire; $qb = $this->createQueryBuilder('t'); $qb ->join('t.individu', 'i')->addSelect('i') ->where($qb->expr()->in('t.ine', $inesSecondaires)) ->andWhere('t.histoDestruction is null'); try { return $qb->getQuery()->getOneOrNullResult(); } catch (NonUniqueResultException $e) { throw new NonUniqueDoctorantException( sprintf( "Anomalie : plusieurs doctorants (non historisés) ont été trouvés avec le·s numéro·s INE " . "secondaire·s suivant·s : %s.", implode(', ', $inesSecondaires) ), NonUniqueDoctorantException::CODE_INE, ); } } /** * Recherche d'un doctorant par son individu lié. * Loading module/Doctorant/src/Doctorant/Entity/Db/Repository/Exception/NonUniqueDoctorantException.php +1 −0 Changes for module/Doctorant/src/Doctorant/Entity/Db/Repository/Exception/NonUniqueDoctorantException.php: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -9,4 +9,5 @@ class NonUniqueDoctorantException extends Exception public const CODE_SOURCE_CODE = 1; public const CODE_INE = 2; public const CODE_CODE_APPRENANT = 3; public const CODE_UUID_APPRENANT = 4; } No newline at end of file module/InscriptionAdministrative/doc/integration_flux_inscrip_admin.drawio +1 −553 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
composer.lock +12 −5 Changes for composer.lock: 12 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], "content-hash": "fef08d5a47ca50a2db2edde3d96e2721", "content-hash": "f1bbbde786189a5ec236c509436c1fe2", "packages": [ { "name": "apereo/phpcas", Loading Loading @@ -13340,11 +13340,11 @@ }, { "name": "unicaen/sygal-api", "version": "dev-master", "version": "dev-feature_uuid_apprenant", "source": { "type": "git", "url": "https://git.unicaen.fr/lib/unicaen/sygal-api.git", "reference": "92bedae6f8949bdf8b782ff61599c95c391abe95" "reference": "3d5078522044974d242d3c50365172d2eff29708" }, "require": { "guzzlehttp/guzzle": "^7.0", Loading @@ -13359,7 +13359,6 @@ "require-dev": { "phpunit/phpunit": "^8.0" }, "default-branch": true, "type": "module", "autoload": { "psr-4": { Loading @@ -13369,8 +13368,16 @@ "./Module.php" ] }, "scripts": { "post-install-cmd": [ "mkdir -p public/unicaen && cp -r vendor/unicaen/sygal-api/asset/public/unicaen public/" ], "post-update-cmd": [ "mkdir -p public/unicaen && cp -r vendor/unicaen/sygal-api/asset/public/unicaen public/" ] }, "description": "API SyGAL", "time": "2026-08-27T12:52:37+00:00" "time": "2026-10-16T13:07:28+00:00" }, { "name": "unicaen/utilisateur", Loading
doc/release-notes/feature_uuid_apprenant/01_inscr_admin_apprenant.sql 0 → 100644 +71 −0 Changes for doc/release-notes/feature_uuid_apprenant/01_inscr_admin_apprenant.sql: 71 added lines, 0 removed lines. Original line number Diff line number Diff line -- -- Import des Inscriptions administratives envoyées par Pégase. -- -- Nouvelles colonnes : -- - liste_ine_secondaire -- - uuid_apprenant -- - mail_institutionnel -- alter table inscription_administrative_apprenant add column liste_ine_secondaire varchar(512); alter table inscription_administrative_apprenant add column uuid_apprenant varchar(128); alter table inscription_administrative_apprenant add column mail_institutionnel varchar(128); alter table tmp_inscription_administrative_apprenant add column liste_ine_secondaire varchar(512); alter table tmp_inscription_administrative_apprenant add column uuid_apprenant varchar(128); alter table tmp_inscription_administrative_apprenant add column mail_institutionnel varchar(128); drop view if exists v_diff_inscription_administrative_apprenant; drop view src_inscription_administrative_apprenant; create or replace view src_inscription_administrative_apprenant (id, histo_creation, source_code, source_id, inscription_administrative_id, code, ine, liste_ine_secondaire, uuid_apprenant, mail_institutionnel, deuxieme_prenom, genre, mail_personnel, mail_urgence, nom_de_naissance, nom_usuel, prenom, prenom_usage, telephone_personnel, telephone_urgence, troisieme_prenom, commune_de_naissance, commune_de_naissance_etranger, date_d_obtention_de_la_deuxieme_nationalite, date_de_naissance, deuxieme_nationalite, libelle_commune_de_naissance, libelle_deuxieme_nationalite, libelle_nationalite, libelle_pays_de_naissance, nationalite, pays_de_naissance, haystack) as SELECT NULL::bigint AS id, tmp.histo_creation, tmp.source_code, src.id AS source_id, ia.id AS inscription_administrative_id, tmp.code, tmp.ine, tmp.liste_ine_secondaire, tmp.uuid_apprenant, tmp.mail_institutionnel, tmp.deuxieme_prenom, tmp.genre, tmp.mail_personnel, tmp.mail_urgence, tmp.nom_de_naissance, tmp.nom_usuel, tmp.prenom, tmp.prenom_usage, tmp.telephone_personnel, tmp.telephone_urgence, tmp.troisieme_prenom, tmp.commune_de_naissance, tmp.commune_de_naissance_etranger, tmp.date_d_obtention_de_la_deuxieme_nationalite, tmp.date_de_naissance, tmp.deuxieme_nationalite, tmp.libelle_commune_de_naissance, tmp.libelle_deuxieme_nationalite, tmp.libelle_nationalite, tmp.libelle_pays_de_naissance, tmp.nationalite, tmp.pays_de_naissance, btrim(str_reduce(array_to_string(ARRAY[tmp.code, tmp.ine, tmp.nom_de_naissance, tmp.nom_usuel, tmp.prenom, tmp.deuxieme_prenom, tmp.prenom_usage], ' '::text))) AS haystack FROM tmp_inscription_administrative_apprenant tmp JOIN source src ON src.id = tmp.source_id LEFT JOIN inscription_administrative ia ON ia.source_code::text = tmp.inscription_administrative_id::text; alter table doctorant add column liste_ine_secondaire varchar(512); alter table doctorant add column uuid_apprenant_in_source varchar(128); --alter table individu rename column email to email_institutionnel; -- todo : faire plus tard ?
module/Doctorant/src/Doctorant/Entity/Db/Repository/DoctorantRepository.php +50 −1 Changes for module/Doctorant/src/Doctorant/Entity/Db/Repository/DoctorantRepository.php: 50 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -40,6 +40,28 @@ class DoctorantRepository extends DefaultEntityRepository } } /** * @throws \Doctorant\Entity\Db\Repository\Exception\NonUniqueDoctorantException */ public function findOneByUuidApprenant(string $uuidApprenant): ?Doctorant { $qb = $this->createQueryBuilder('t'); $qb ->join('t.individu', 'i')->addSelect('i') ->where('t.uuidApprenantInSource = :uuidApprenant') ->andWhere('t.histoDestruction is null') ->setParameter('uuidApprenant', $uuidApprenant); try { return $qb->getQuery()->getOneOrNullResult(); } catch (NonUniqueResultException $e) { throw new NonUniqueDoctorantException( "Anomalie : plusieurs doctorants (non historisés) ont été trouvés avec le même UUID apprenant '$uuidApprenant'.", NonUniqueDoctorantException::CODE_UUID_APPRENANT, ); } } /** * @throws \Doctorant\Entity\Db\Repository\Exception\NonUniqueDoctorantException */ Loading @@ -65,7 +87,7 @@ class DoctorantRepository extends DefaultEntityRepository /** * @throws \Doctorant\Entity\Db\Repository\Exception\NonUniqueDoctorantException */ public function findOneByIne(string $ine): ?Doctorant public function findOneByIneMaitre(string $ine): ?Doctorant { $qb = $this->createQueryBuilder('t'); $qb Loading @@ -84,6 +106,33 @@ class DoctorantRepository extends DefaultEntityRepository } } /** * @throws \Doctorant\Entity\Db\Repository\Exception\NonUniqueDoctorantException */ public function findOneByIneSecondaire(array|string $ineSecondaire): ?Doctorant { $inesSecondaires = (array)$ineSecondaire; $qb = $this->createQueryBuilder('t'); $qb ->join('t.individu', 'i')->addSelect('i') ->where($qb->expr()->in('t.ine', $inesSecondaires)) ->andWhere('t.histoDestruction is null'); try { return $qb->getQuery()->getOneOrNullResult(); } catch (NonUniqueResultException $e) { throw new NonUniqueDoctorantException( sprintf( "Anomalie : plusieurs doctorants (non historisés) ont été trouvés avec le·s numéro·s INE " . "secondaire·s suivant·s : %s.", implode(', ', $inesSecondaires) ), NonUniqueDoctorantException::CODE_INE, ); } } /** * Recherche d'un doctorant par son individu lié. * Loading
module/Doctorant/src/Doctorant/Entity/Db/Repository/Exception/NonUniqueDoctorantException.php +1 −0 Changes for module/Doctorant/src/Doctorant/Entity/Db/Repository/Exception/NonUniqueDoctorantException.php: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -9,4 +9,5 @@ class NonUniqueDoctorantException extends Exception public const CODE_SOURCE_CODE = 1; public const CODE_INE = 2; public const CODE_CODE_APPRENANT = 3; public const CODE_UUID_APPRENANT = 4; } No newline at end of file
module/InscriptionAdministrative/doc/integration_flux_inscrip_admin.drawio +1 −553 File changed.Preview size limit exceeded, changes collapsed. Show changes