diff --git a/admin/migration/AgrementStructure.php b/admin/migration/AgrementStructure.php
index bb572cd0ca3cf6d6758f657199d914bb18fc86f1..b937e5b26bf091f16c400645a114279c8c0bb40b 100644
--- a/admin/migration/AgrementStructure.php
+++ b/admin/migration/AgrementStructure.php
@@ -46,19 +46,15 @@ class AgrementStructure extends AbstractMigration
{
$bdd = $this->manager->getBdd();
$console = $this->manager->getOseAdmin()->getConsole();
- $console->println("Récupération des agréments conseil restreint sans structure");
//La vue TBL_AGREMENT a changé, donc il faut d'abord recharger la vue agrement pour le traitement
- $console->println("------------------------------------------------------------------");
- $console->println("Nouveau calcul du tableau de bord agrement");
+ $console->println("Calcul du tableau de bord agrement");
$bdd->exec('BEGIN unicaen_tbl.calculer(\'agrement\'); END;');
$tacrId = (int)$bdd->select("SELECT id FROM type_agrement WHERE code = 'CONSEIL_RESTREINT'")[0]['ID'];
- $bdd->exec("alter trigger AGREMENT_CK disable");
-
//On récupère les agrements de type conseil restreint sans structure
$agrementsToRecreate = [];
- $sql = 'SELECT
+ $sql = "SELECT
a.id agrement_id,
i.id intervenant_id,
i.annee_id annee_id,
@@ -69,28 +65,30 @@ class AgrementStructure extends AbstractMigration
FROM AGREMENT a
JOIN INTERVENANT i ON i.id = a.intervenant_id
WHERE
- a.type_agrement_id = 1
+ a.type_agrement_id = $tacrId
AND a.structure_id IS NULL
AND a.histo_destruction IS NULL
- AND i.annee_id = 2019';
+ ";
$agrements = $bdd->select($sql);
//Nombre d'agréments concernés
$nbAgrement = count($agrements);
- $console->println("Il y a $nbAgrement a corriger");
- $nbAgrementCorrige = 0;
- //On commence le traitement de chaque agrément qui pose problème
- foreach ($agrements as $agrement) {
- try {
- $structureId = false;
- $nomIntervenant = $agrement['NOM_USUEL'];
- $intervenantId = $agrement['INTERVENANT_ID'];
- $agrementId = $agrement['AGREMENT_ID'];
- $console->println("------------------------------------------------------------------");
- $console->println("Traitement de l'agrement de $nomIntervenant / Agrement_id : $agrementId");
- $console->println("Recherche d'un structure id dans la table TBL_AGREMENT");
- //On recherche d'abord dans la table TBL_AGREMENT pour trouver la structure possible
- $sqlAgrement = "SELECT
+ if ($nbAgrement > 0) {
+ $bdd->exec("alter trigger AGREMENT_CK disable");
+ $console->println("Il y a $nbAgrement agréments du conseil restreint a corriger");
+ $nbAgrementCorrige = 0;
+ //On commence le traitement de chaque agrément qui pose problème
+ foreach ($agrements as $agrement) {
+ try {
+ $structureId = false;
+ $nomIntervenant = $agrement['NOM_USUEL'];
+ $intervenantId = $agrement['INTERVENANT_ID'];
+ $agrementId = $agrement['AGREMENT_ID'];
+ $console->println("------------------------------------------------------------------");
+ $console->println("Traitement de l'agrement de $nomIntervenant / Agrement_id : $agrementId");
+ $console->println("Recherche d'un structure id dans la table TBL_AGREMENT");
+ //On recherche d'abord dans la table TBL_AGREMENT pour trouver la structure possible
+ $sqlAgrement = "SELECT
ta.structure_id structure_id,
ta.intervenant_id intervenant_id
FROM
@@ -100,21 +98,21 @@ class AgrementStructure extends AbstractMigration
AND ta.type_agrement_id = $tacrId
AND ta.agrement_id IS NULL";
- $agrements = $bdd->select($sqlAgrement);
-
- $nbStructuresPossibles = count($agrements);
- //Cas où une seule structure est trouvée dans la table TBL_AGREMENT
- if ($nbStructuresPossibles == 1) {
- $agrement = current($agrements);
- //Je set la variable $structureId pour l'update
- $structureId = $agrement['STRUCTURE_ID'];
- $console->println("Une seule structure trouvée pour cet intervenant / Structure_id : " . $structureId);
- } else {
- //Cas où j'ai plusieurs structures possibles.
- $console->println("Plusieurs structure_id possible pour cet agrément : $nbStructuresPossibles");
- $console->println("Recherche des structures possibles via les contrats");
- //Il faut donc remonter au niveau des contrats pour pouvoir essayer de trouver le bon structure_id de l'agrement
- $sqlContrats = "SELECT
+ $agrements = $bdd->select($sqlAgrement);
+
+ $nbStructuresPossibles = count($agrements);
+ //Cas où une seule structure est trouvée dans la table TBL_AGREMENT
+ if ($nbStructuresPossibles == 1) {
+ $agrement = current($agrements);
+ //Je set la variable $structureId pour l'update
+ $structureId = $agrement['STRUCTURE_ID'];
+ $console->println("Une seule structure trouvée pour cet intervenant / Structure_id : " . $structureId);
+ } else {
+ //Cas où j'ai plusieurs structures possibles.
+ $console->println("Plusieurs structure_id possible pour cet agrément : $nbStructuresPossibles");
+ $console->println("Recherche des structures possibles via les contrats");
+ //Il faut donc remonter au niveau des contrats pour pouvoir essayer de trouver le bon structure_id de l'agrement
+ $sqlContrats = "SELECT
c.structure_id structure_id,
c.intervenant_id intervenant_id
FROM
@@ -123,62 +121,63 @@ class AgrementStructure extends AbstractMigration
c.intervenant_id = $intervenantId
AND c.histo_destruction IS NULL";
- $contrats = $bdd->select($sqlContrats);
+ $contrats = $bdd->select($sqlContrats);
- $nbContrats = count($contrats);
- //Cas où j'ai un contrat unique valide, je peux donc isoler la structure_id pour la mettre à jour dans l'agrément
- if ($nbContrats == 1) {
- $contrat = current($contrats);
- //Je set la variable $structureId pour l'update
- $structureId = $contrat['STRUCTURE_ID'];
- $console->println("Un contrat unique trouvé et validé avec la structure id : " . $structureId);
+ $nbContrats = count($contrats);
+ //Cas où j'ai un contrat unique valide, je peux donc isoler la structure_id pour la mettre à jour dans l'agrément
+ if ($nbContrats == 1) {
+ $contrat = current($contrats);
+ //Je set la variable $structureId pour l'update
+ $structureId = $contrat['STRUCTURE_ID'];
+ $console->println("Un contrat unique trouvé et validé avec la structure id : " . $structureId);
+ }
}
- }
- //Si j'ai réussi à identifier une structure unique alors je peux mettre à jour la table agrement
- if ($structureId !== false) {
- $console->println("Mise à jour de l'agrement id : $agrementId avec le structure id : $structureId", $console::COLOR_LIGHT_GREEN);
- $sqlUpdate = "UPDATE AGREMENT SET STRUCTURE_ID = $structureId WHERE ID = $agrementId";
- $nbAgrementCorrige++;
- $bdd->exec($sqlUpdate);
- } else {
- //Sinon je fais un soft delete de l'agrement
- //on met une date précise pour retrouver facilement
- $console->println("Suppression de l'agrément id : $agrementId car aucune structure n'a pu être identifiée", $console::COLOR_LIGHT_RED);
- $agrementsToRecreate [] = $agrement;
- $sqlDelete = "UPDATE
+ //Si j'ai réussi à identifier une structure unique alors je peux mettre à jour la table agrement
+ if ($structureId !== false) {
+ $console->println("Mise à jour de l'agrement id : $agrementId avec le structure id : $structureId", $console::COLOR_LIGHT_GREEN);
+ $sqlUpdate = "UPDATE AGREMENT SET STRUCTURE_ID = $structureId WHERE ID = $agrementId";
+ $nbAgrementCorrige++;
+ $bdd->exec($sqlUpdate);
+ } else {
+ //Sinon je fais un soft delete de l'agrement
+ //on met une date précise pour retrouver facilement
+ $console->println("Suppression de l'agrément id : $agrementId car aucune structure n'a pu être identifiée", $console::COLOR_LIGHT_RED);
+ $agrementsToRecreate [] = $agrement;
+ $sqlDelete = "UPDATE
AGREMENT
SET
HISTO_DESTRUCTION = TO_DATE('2020 - 01 - 01', 'YYYY - MM - DD'),
HISTO_DESTRUCTEUR_ID = HISTO_CREATEUR_ID
WHERE ID = $agrementId";
- $bdd->exec($sqlDelete);
+ $bdd->exec($sqlDelete);
+ }
+ } catch (Exception $e) {
+ $console->println($e->getMessage());
}
- } catch (Exception $e) {
- $console->println($e->getMessage());
}
- }
- if (!empty($agrementsToRecreate)) {
- $console->println("Seulement $nbAgrementCorrige sur $nbAgrement on été corrigés", $console::COLOR_LIGHT_RED);
- $console->println("Les intervenants suivants nécessitent une intervention manuelle de votre part : il faut saisir à nouveau leurs agréments du conseil restreint : ", $console::COLOR_LIGHT_RED);
- foreach ($agrementsToRecreate as $value) {
- $console->println($value['PRENOM'] . " " . $value['NOM_USUEL'] . " (id : " . $value['INTERVENANT_ID'] . " / code : " . $value['CODE_INTERVENANT'] . ")", $console::COLOR_LIGHT_RED);
+ if (!empty($agrementsToRecreate)) {
+ $console->println("Seulement $nbAgrementCorrige sur $nbAgrement on été corrigés", $console::COLOR_LIGHT_RED);
+ $console->println("Les intervenants suivants nécessitent une intervention manuelle de votre part : il faut saisir à nouveau leurs agréments du conseil restreint : ", $console::COLOR_LIGHT_RED);
+ foreach ($agrementsToRecreate as $value) {
+ $console->println($value['PRENOM'] . " " . $value['NOM_USUEL'] . " (année : " . $value['ANNEE_ID'] . " / id : " . $value['INTERVENANT_ID'] . " / code : " . $value['CODE_INTERVENANT'] . ")", $console::COLOR_LIGHT_RED);
+ }
+ } else {
+ $console->println("Les $nbAgrement agrements restreints sans structure on été corrigés.", $console::COLOR_LIGHT_GREEN);
}
- } else {
- $console->println("Les $nbAgrement agrements restreints sans structure on été corrigé.", $console::COLOR_LIGHT_GREEN);
- }
- $bdd->exec("alter trigger AGREMENT_CK enable");
+ $bdd->exec("alter trigger AGREMENT_CK enable");
- //On recalcule les tableaux de bord agrement et workflow pour tout remettre d'équerre
- $console->println("------------------------------------------------------------------");
- $console->println("Nouveau calcul du tableau de bord agrement");
- $bdd->exec('BEGIN unicaen_tbl.calculer(\'agrement\'); END;');
+ //On recalcule les tableaux de bord agrement et workflow pour tout remettre d'équerre
+ $console->println("------------------------------------------------------------------");
+ $console->println("Nouveau calcul du tableau de bord agrement");
+ $bdd->exec('BEGIN unicaen_tbl.calculer(\'agrement\'); END;');
- $console->println("Nouveau calcul du tableau de bord workflow");
- $bdd->exec('BEGIN unicaen_tbl.calculer(\'workflow\'); END;');
+ $console->println("Nouveau calcul du tableau de bord workflow");
+ $bdd->exec('BEGIN unicaen_tbl.calculer(\'workflow\'); END;');
- $console->println("Terminé");
+ $console->println("Terminé");
+ }
}
}
\ No newline at end of file