From 3ec28efb40d3604039fc0e1d2d2d9826a071b934 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Metivier <jean-philippe.metivier@unicaen.fr>
Date: Mon, 14 Apr 2025 12:08:05 +0200
Subject: [PATCH] Clarification de la configuration de la bd

---
 config/autoload/database-app.local.php.dist  |  66 +++++++++
 config/autoload/database-sirh.local.php.dist |  72 ++++++++++
 config/autoload/database.local.php.dist      | 106 --------------
 config/autoload/unicaen-bdd-admin.global.php |  10 +-
 documentation/docs/connecteurs.md            | 140 ++++++++-----------
 5 files changed, 202 insertions(+), 192 deletions(-)
 create mode 100644 config/autoload/database-app.local.php.dist
 create mode 100644 config/autoload/database-sirh.local.php.dist
 delete mode 100644 config/autoload/database.local.php.dist

diff --git a/config/autoload/database-app.local.php.dist b/config/autoload/database-app.local.php.dist
new file mode 100644
index 00000000..1de21cf7
--- /dev/null
+++ b/config/autoload/database-app.local.php.dist
@@ -0,0 +1,66 @@
+<?php
+
+use Doctrine\DBAL\Driver\PgSQL\Driver as DriverPgSQL;
+use Doctrine\ORM\Mapping\Driver\XmlDriver;
+use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
+
+const DB_APP_DRIVER = DriverPgSQL::class;
+const DB_APP_HOSTNAME = 'XXXX';
+const DB_APP_PORT = 'XXXX';
+const DB_APP_NAME     = 'XXXX';
+const DB_APP_USERNAME = 'XXXX';
+const DB_APP_PASSWORD = 'XXXX';
+
+return [
+    'doctrine' => [
+        'driver' => [
+            'orm_default' => [
+                'class' => MappingDriverChain::class,
+                'drivers' => [
+                    'Application\Entity\Db' => 'orm_default_xml_driver',
+                ],
+            ],
+            'orm_default_xml_driver' => [
+                'class' => XmlDriver::class,
+                'cache' => 'apc',
+                'paths' => [
+                    __DIR__ . '/../src/Application/Entity/Db/Mapping',
+                ],
+            ],
+        ],
+        'cache' => [
+            'apc' => [
+                'namespace' => 'MESFORMATIONS__' . __NAMESPACE__,
+            ],
+        ],
+        'connection' => [
+            'orm_default' => [
+                'driverClass' => DB_APP_DRIVER,
+                'params' => [
+                    'host' => DB_APP_HOSTNAME,
+                    'port' => DB_APP_PORT,
+                    'user' => DB_APP_USERNAME,
+                    'password' => DB_APP_PASSWORD,
+                    'dbname' => DB_APP_NAME,
+                    'charset' => 'utf8',
+                ],
+            ],
+        ],
+        'entitymanager' => [
+            'orm_default' => [
+                'connection' => 'orm_default',
+                'configuration' => 'orm_default',
+            ],
+        ],
+        'configuration' => [
+            'orm_default' => [
+                'metadata_cache' => 'array',
+                'query_cache' => 'array',
+                'result_cache' => 'array',
+                'hydration_cache' => 'array',
+                'generate_proxies' => true,
+                'driver' => 'orm_default',
+            ],
+        ],
+    ],
+];
\ No newline at end of file
diff --git a/config/autoload/database-sirh.local.php.dist b/config/autoload/database-sirh.local.php.dist
new file mode 100644
index 00000000..e695bc19
--- /dev/null
+++ b/config/autoload/database-sirh.local.php.dist
@@ -0,0 +1,72 @@
+<?php
+
+use Doctrine\DBAL\Driver\PgSQL\Driver as DriverPgSQL;
+use Doctrine\DBAL\Driver\OCI8\Driver as DriverOCI8;
+use Doctrine\ORM\Mapping\Driver\XmlDriver;
+use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
+
+const DRIVER_SIRH_OCI8 = DriverOCI8::class;
+const DRIVER_SIRH_PGSQL = DriverPgSQL::class;
+
+const DB_SIRH_DRIVER = DRIVER_SIRH_PGSQL;
+//const DB_SIRH_DRIVER = DRIVER_SIRH_OCI8;
+const DB_SIRH_HOSTNAME = 'XXXX';
+const DB_SIRH_PORT = 'XXXX';
+const DB_SIRH_NAME = 'XXXX';
+const DB_SIRH_USERNAME = 'XXXX';
+const DB_SIRH_PASSWORD = 'XXXX';
+
+return [
+    'doctrine' => [
+        'driver' => [
+            'orm_sirh' => [
+                'class' => MappingDriverChain::class,
+                'drivers' => [
+                    'Application\Entity\Db' => 'orm_sirh_xml_driver',
+                ],
+            ],
+            'orm_sirh_xml_driver' => [
+                'class' => XmlDriver::class,
+                'cache' => 'apc',
+                'paths' => [
+                    __DIR__ . '/../src/Application/Entity/Db/Mapping',
+                ],
+            ],
+        ],
+        'cache' => [
+            'apc' => [
+                'namespace' => 'MESFORMATIONS__' . __NAMESPACE__,
+            ],
+        ],
+        'connection' => [
+            'orm_sirh' => [
+                'driverClass' => DB_SIRH_DRIVER,
+                'params' => [
+                    'host' => DB_SIRH_HOSTNAME,
+                    'port' => DB_SIRH_PORT,
+                    'user' => DB_SIRH_USERNAME,
+                    'password' => DB_SIRH_PASSWORD,
+                    'service' => DB_SIRH_NAME,
+                    'servicename' => DB_SIRH_NAME,
+                    'charset' => 'AL32UTF8',
+                ],
+            ],
+        ],
+        'entitymanager' => [
+            'orm_sirh' => [
+                'connection' => 'orm_sirh',
+                'configuration' => 'orm_sirh',
+            ],
+        ],
+        'configuration' => [
+            'orm_sirh' => [
+                'metadata_cache' => 'array',
+                'query_cache' => 'array',
+                'result_cache' => 'array',
+                'hydration_cache' => 'array',
+                'generate_proxies' => true,
+                'driver' => 'orm_sirh',
+            ],
+        ],
+    ],
+];
\ No newline at end of file
diff --git a/config/autoload/database.local.php.dist b/config/autoload/database.local.php.dist
deleted file mode 100644
index e58400b5..00000000
--- a/config/autoload/database.local.php.dist
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-use Doctrine\DBAL\Driver\PgSQL\Driver as DriverPgSQL;
-use Doctrine\DBAL\Driver\OCI8\Driver as DriverOCI8;
-use Doctrine\ORM\Mapping\Driver\XmlDriver;
-use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
-
-$env = getenv('APPLICATION_ENV') ?: 'production';
-
-const DRIVER_OCI8 = DriverOCI8::class;
-const DRIVER_PGSQL = DriverPgSQL::class;
-
-const DB_DRIVER = DRIVER_PGSQL;
-const DB_HOSTNAME = 'XXXX';
-const DB_PORT = 'XXXX';
-const DB_NAME = 'XXXX';
-const DB_USERNAME = 'XXXX';
-const DB_PASSWORD = 'XXXX';
-
-const DB_SYNCHRO_DRIVER = DRIVER_OCI8;
-const DB_SYNCHRO_HOSTNAME = 'XXXX';
-const DB_SYNCHRO_PORT = 'XXXX';
-const DB_SYNCHRO_NAME = 'XXXX';
-const DB_SYNCHRO_USERNAME = 'XXXX';
-const DB_SYNCHRO_PASSWORD = 'XXXX';
-
-return [
-    'doctrine' => [
-        'driver' => [
-            'orm_octopus' => [
-                'class' => MappingDriverChain::class,
-                'drivers' => [
-                    'Application\Entity\Db' => 'orm_octopus_xml_driver',
-                ],
-            ],
-            'orm_octopus_xml_driver' => [
-                'class' => XmlDriver::class,
-                'cache' => 'apc',
-                'paths' => [
-                    __DIR__ . '/../src/Application/Entity/Db/Mapping',
-                ],
-            ],
-        ],
-        'cache' => [
-            'apc' => [
-                'namespace' => 'PREECOG__' . __NAMESPACE__,
-            ],
-        ],
-        'connection' => [
-            // base de l'application
-            'orm_default' => [
-                'driverClass' => DB_DRIVER,
-                'params' => [
-                    'driver' => 'Postgresql',
-                    'host' => DB_HOSTNAME,
-                    'port' => DB_PORT,
-                    'charset' => 'utf8',
-                    'driverOptions' => [1002 => 'SET NAMES utf8'],
-                    'user' => DB_USERNAME,
-                    'username' => DB_USERNAME,
-                    'password' => DB_PASSWORD,
-                    'dbname' => DB_NAME,
-                ],
-            ],
-            'orm_octopus' => [
-                'driverClass' => DB_SYNCHRO_DRIVER,
-                'params' => [
-                    'host' => DB_SYNCHRO_HOSTNAME,
-                    'port' => DB_SYNCHRO_PORT,
-                    'user' => DB_SYNCHRO_USERNAME,
-                    'password' => DB_SYNCHRO_PASSWORD,
-                    'service' => DB_SYNCHRO_NAME,
-                    'servicename' => DB_SYNCHRO_NAME,
-                    'charset' => 'AL32UTF8',
-                ],
-            ],
-        ],
-        'entitymanager' => [
-            'orm_default' => [
-                'connection' => 'orm_default',
-                'configuration' => 'orm_default',
-            ],
-            'orm_octopus' => [
-                'connection' => 'orm_octopus',
-                'configuration' => 'orm_octopus',
-            ],
-        ],
-        'configuration' => [
-            'orm_default' => [
-                'metadata_cache' => 'array',
-                'query_cache' => 'array',
-                'result_cache' => 'array',
-                'hydration_cache' => 'array',
-                'generate_proxies' => true,
-            ],
-            'orm_octopus' => [
-                'metadata_cache' => 'array',
-                'query_cache' => 'array',
-                'result_cache' => 'array',
-                'hydration_cache' => 'array',
-                'generate_proxies' => true,
-                'driver' => 'orm_octopus',
-            ],
-        ],
-    ],
-];
\ No newline at end of file
diff --git a/config/autoload/unicaen-bdd-admin.global.php b/config/autoload/unicaen-bdd-admin.global.php
index d23c64e3..60496c59 100644
--- a/config/autoload/unicaen-bdd-admin.global.php
+++ b/config/autoload/unicaen-bdd-admin.global.php
@@ -272,12 +272,12 @@ return [
             'default' => [
                 'driver' => 'Postgresql',
                 'charset' => 'utf8',
-                'port' => DB_PORT,
-                'host' => DB_HOSTNAME,
+                'port' => DB_APP_PORT,
+                'host' => DB_APP_HOSTNAME,
 
-                'dbname' => DB_NAME,
-                'user' => DB_USERNAME,
-                'password' => DB_PASSWORD,
+                'dbname' => DB_APP_NAME,
+                'user' => DB_APP_USERNAME,
+                'password' => DB_APP_PASSWORD,
             ],
         ],
     ],
diff --git a/documentation/docs/connecteurs.md b/documentation/docs/connecteurs.md
index bff84422..3861725b 100644
--- a/documentation/docs/connecteurs.md
+++ b/documentation/docs/connecteurs.md
@@ -217,7 +217,7 @@ Les champs `SEXE` et `DATE_NAISSANCE` ne sont pas obligatoires (pour des raisons
 
 ### La liste des agent·es V_MESFORMATIONS_AGENT_AFFECTATION
 
-Cette vue liste les affectations des agents
+Cette vue liste les affectations des agents, elle permet notamment le rattachement des agents aux structures.
 
 | Nom de la colonne | Type        | Obligatoire | Commentaire                                   |
 |-------------------|-------------|-------------|-----------------------------------------------|
@@ -234,19 +234,63 @@ Cette vue liste les affectations des agents
 Exemple depuis l'instance de démonstration.
 ```csv
 'id';'agent_id';'structure_id';'t_principale';'t_hierarchique';'t_fonctionnelle','quotite','date_debut','date_fin'
-4577,"40",15,"O","O","O",80,"2025-01-01",null
-4578,"40",21,"N","N","O",20,"2025-01-01","2025-08-31" 
+4577,"40",15,1,80,"2025-01-01",null
+4578,"41",21,2,20,"2025-01-01","2025-08-31" 
 ```
 
 ### La liste des agent·es V_MESFORMATIONS_AGENT_GRADE
 
+Cette vue liste les corps, grades des agents, elle permet le calcul d'indicateur ou le déclenchement de processus différents.
+
+| Nom de la colonne | Type        | Obligatoire | Commentaire                                        |
+|-------------------|-------------|-------------|----------------------------------------------------|
+| ID                | integer     | Oui         | Clef primaire                                      |
+| AGENT_ID          | varchar(40) | Oui         | Clef étrangère vers V_MESFORMATIONS_AGENT          |
+| STRUCTURE_ID      | integer     | Oui         | Clef étrangère vers V_MESFORMATIONS_STRUCTURE      |
+| CORRESPONDANCE_ID | integer     | Oui         | Clef étrangère vers V_MESFORMATIONS_CORRESPONDANCE |
+| CORPS_ID          | integer     | Oui         | Clef étrangère vers V_MESFORMATIONS_CORPS          |
+| GRADE_ID          | integer     | Oui         | Clef étrangère vers V_MESFORMATIONS_GRADE          |
+| EMPLOITYPE_ID     | integer     | Oui         | Clef étrangère vers V_MESFORMATIONS_EMPLOITYPE     |
+| DATE_DEBUT        | DateTime    | Oui         |                                                    |
+| DATE_FIN          | DateTime    | Non         |                                                    |
+
+Exemple depuis l'instance de démonstration.
+```csv
+'id';'agent_id';'structure_id';'t_principale';'t_hierarchique';'t_fonctionnelle','quotite','date_debut','date_fin'
+4577,"40",15, 1, 60, 150, 14, "2025-01-01",null
+4578,"40",21, 2, 67, 114, 68, "2025-01-01",null
+```
 ### La liste des agent·es V_MESFORMATIONS_AGENT_STATUT
 
+Cette vue liste les statuts connues des agents, elle a pour le moment des fins d'affichage (mais pourrait être exploitée pour du filtrage par la suite). 
+
+
+| Nom de la colonne | Type        | Obligatoire | Commentaire                                   |
+|-------------------|-------------|-------------|-----------------------------------------------|
+| ID                | integer     | Oui         | Clef primaire                                 |
+| AGENT_ID          | varchar(40) | Oui         | Clef étrangère vers V_MESFORMATIONS_AGENT     |
+| STRUCTURE_ID      | integer     | Oui         | Clef étrangère vers V_MESFORMATIONS_STRUCTURE |
+| DATE_DEBUT        | DateTime    | Oui         |                                               |
+| DATE_FIN          | DateTime    | Non         |
+| T_TITULAIRE       | varchar(1)  | Oui         |                                               |
+| T_CDI             | varchar(1)  | Oui         |                                               |
+| T_CDD             | varchar(1)  | Oui         |                                               |
+| T_ADMINISTRATIF   | varchar(1)  | Oui         |                                               |
+| T_ENSEIGNANT      | varchar(1)  | Oui         |                                               |
+| T_CHERCHEUR       | varchar(1)  | Oui         |                                               |
+| T_VACATAIRE       | varchar(1)  | Oui         |                                               |
+| T_DOCTORANT       | varchar(1)  | Oui         |                                               |
+| T_DETACHE_IN      | varchar(1)  | Oui         |                                               |
+| T_DETACHE_OUT     | varchar(1)  | Oui         |                                               |
+| T_HEBERGE         | varchar(1)  | Oui         |                                               |
+| T_DISPO           | varchar(1)  | Oui         |                                               |
+| T_EMERITE         | varchar(1)  | Oui         |                                               |
+| T_RETRAITE        | varchar(1)  | Oui         |                                               |
+       
 ## Données liées aux responsabilités
 
 1. STRUCTURE_RESPONSABLE
-2. STRUCTURE_GESTIONNAIRE
-3. AGENT_VALIDEUR
+2. AGENT_VALIDEUR
 
 Configuration de la biliothèque
 ===
@@ -262,7 +306,7 @@ Dans la suite, je présente la configuration faite à Caen exploitant deux bases
 
 Dans cet exemple, octopus est une base de donnée pgsql (penser à installer le *driver* associé).
 
-Fichier 'config/autoload/database-octopus.local.php'
+Fichier 'config/autoload/database-sirh.local.php'
 ```php
 <?php
 use Doctrine\DBAL\Driver\PDO\PgSQL\Driver;
@@ -272,13 +316,13 @@ use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
 return [
     'doctrine' => [
         'driver' => [
-            'orm_octopus'            => [
+            'orm_sirh'            => [
                 'class'   => MappingDriverChain::class,
                 'drivers' => [
-                    'Application\Entity\Db' => 'orm_octopus_xml_driver',
+                    'Application\Entity\Db' => 'orm_sirh_xml_driver',
                 ],
             ],
-            'orm_octopus_xml_driver' => [
+            'orm_sirh_xml_driver' => [
                 'class' => XmlDriver::class,
                 'cache' => 'apc',
                 'paths' => [
@@ -287,7 +331,7 @@ return [
             ],
         ],
         'connection' => [
-            'orm_octopus' => [
+            'orm_sirh' => [
                 'driverClass' => OCI8::class,
                 'params'      => [
                     'host'        => #####,
@@ -303,86 +347,20 @@ return [
 
 
         'entitymanager' => [
-            'orm_octopus' => [
-                'connection'    => 'orm_octopus',
-                'configuration' => 'orm_octopus',
+            'orm_sirh' => [
+                'connection'    => 'orm_sirh',
+                'configuration' => 'orm_sirh',
             ],
         ],
         
         'configuration' => [
-            'orm_octopus' => [
-                'metadata_cache'   => 'array',
-                'query_cache'      => 'array',
-                'result_cache'     => 'array',
-                'hydration_cache'  => 'array',
-                'generate_proxies' => true,
-                'driver'           => 'orm_octopus',
-            ],
-        ],
-    ],
-
-];
-
-
-```
-**Ajout de l'ORM pour UNIFORMSUP**
-
-Dans cet exemple, uniformsup est une base de donnée oracle (penser à installer le *driver* OCI8).
-
-Fichier 'config/autoload/database-uniform.local.php'
-```php
-<?php
-use Doctrine\DBAL\Driver\OCI8\Driver as OCI8;
-use Doctrine\ORM\Mapping\Driver\XmlDriver;
-use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
-
-return [
-    'doctrine' => [
-        'driver' => [
-            'orm_uniform'            => [
-                'class'   => MappingDriverChain::class,
-                'drivers' => [
-                    'Application\Entity\Db' => 'orm_octopus_xml_driver',
-                ],
-            ],
-            'orm_uniform_xml_driver' => [
-                'class' => XmlDriver::class,
-                'cache' => 'apc',
-                'paths' => [
-                    __DIR__ . '/../src/Application/Entity/Db/Mapping',
-                ],
-            ],
-        ],
-        'connection' => [
-            'orm_uniform' => [
-                'driverClass' => OCI8::class,
-                'params'      => [
-                    'host'        => #####,
-                    'user'        => #####,
-                    'password'    => #####,
-                    'charset'     => 'AL32UTF8',
-                    'port'        => ####,
-                    'service'     => ####,
-                    'servicename' => ####,
-                ],
-            ],
-        ],
-
-
-        'entitymanager' => [
-            'orm_uniform' => [
-                'connection'    => 'orm_uniform',
-                'configuration' => 'orm_uniform',
-            ],
-        ],
-        'configuration' => [
-            'orm_uniform' => [
+            'orm_sirh' => [
                 'metadata_cache'   => 'array',
                 'query_cache'      => 'array',
                 'result_cache'     => 'array',
                 'hydration_cache'  => 'array',
                 'generate_proxies' => true,
-                'driver'           => 'orm_uniform',
+                'driver'           => 'orm_sirh',
             ],
         ],
     ],
-- 
GitLab