Commit 317b8071 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

WIP uuid apprenant and co

parent d6d56076
Loading
Loading
Loading
Loading
+1 −1
Changes for composer.json: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@
        "unicaen/renderer": "^7.2",
        "unicaen/search": "^1.1",
        "unicaen/sql": "^2.0",
        "unicaen/sygal-api": "dev-master",
        "unicaen/sygal-api": "dev-feature_uuid_apprenant",
        "unicaen/utilisateur": "^6.3",
        "unicaen/avis": "^1.1"
    },
+12 −5
Changes for composer.lock: 12 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -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",
@@ -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",
@@ -13359,7 +13359,6 @@
            "require-dev": {
                "phpunit/phpunit": "^8.0"
            },
            "default-branch": true,
            "type": "module",
            "autoload": {
                "psr-4": {
@@ -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",
+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 ?
+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
@@ -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
     */
@@ -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
@@ -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é.
     *
+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
@@ -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
Loading