diff --git a/documentation/release/3.1.6.md b/documentation/release/3.1.6.md index 5330d47048cdcaac276c0e63466eb5b2ef4af9dd..2b162c48a666ccdbf4561e541307c6beace8abef 100644 --- a/documentation/release/3.1.6.md +++ b/documentation/release/3.1.6.md @@ -1,92 +1,220 @@ ```sql +-- ---------------------------------------------------------------------------- +-- NOUVEAUX PRIVILEGES (gestion des missions principales) +-- ---------------------------------------------------------------------------- + +INSERT INTO unicaen_privilege_categorie (code, libelle, ordre, namespace) +VALUES ('missionprincipale', 'Gestion des missions principales', 800, 'FicheMetier\Provider\Privilege'); +INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE) +WITH d(code, lib, ordre) AS ( + SELECT 'missionprincipale_index', 'Accéder à l''index', 10 UNION + SELECT 'missionprincipale_afficher', 'Afficher', 20 UNION + SELECT 'missionprincipale_ajouter', 'Ajouter', 30 UNION + SELECT 'missionprincipale_modifier', 'Modifier', 40 UNION + SELECT 'missionprincipale_historiser', 'Historiser/Restaurer', 50 UNION + SELECT 'missionprincipale_supprimer', 'Supprimer', 60 +) +SELECT cp.id, d.code, d.lib, d.ordre +FROM d +JOIN unicaen_privilege_categorie cp ON cp.CODE = 'missionprincipale'; + +-- TODO -- Accorder les privilèges à qui de droit -- + +-- ---------------------------------------------------------------------------- +-- NOUVELLE TABLES (MISSIONS PRINCIPALES) +-- ---------------------------------------------------------------------------- + create table missionprincipale ( - id serial not null - constraint missionprincipale_pk - primary key, - libelle varchar(1024), - niveau_id integer + id serial + constraint missionprincipale_pk primary key, + libelle varchar(1024), + niveau_id integer constraint missionprincipale_carriere_niveau_enveloppe_id_fk - references carriere_niveau_enveloppe - on delete cascade, - histo_creation timestamp default now() not null, - histo_createur_id integer default 0 not null + references carriere_niveau_enveloppe on delete cascade, + histo_creation timestamp default now() not null, + histo_createur_id integer default 0 not null constraint missionprincipale_unicaen_utilisateur_user_id_fk3 - references unicaen_utilisateur_user, + references unicaen_utilisateur_user, + histo_modification timestamp, + histo_modificateur_id integer + constraint missionprincipale_unicaen_utilisateur_user_id_fk + references unicaen_utilisateur_user, + histo_destruction timestamp, + histo_destructeur_id integer + constraint missionprincipale_unicaen_utilisateur_user_id_fk2 + references unicaen_utilisateur_user +); + +create table missionprincipale_activite +( + id serial + constraint missionprincipale_activite_pk primary key, + mission_id integer not null, + libelle text not null, + ordre integer, + histo_creation timestamp not null, + histo_createur_id integer not null + constraint missionprincipale_activite_createur_fk + references unicaen_utilisateur_user, + histo_modification timestamp, + histo_modificateur_id integer + constraint missionprincipale_activite_modificateur_fk + references unicaen_utilisateur_user, + histo_destruction timestamp, + histo_destructeur_id integer + constraint missionprincipale_activite_user_id_fk + references unicaen_utilisateur_user +); +create unique index missionprincipale_activite_id_uindex on missionprincipale_activite (id); + +create table missionprincipale_application +( + mission_id integer not null + constraint missionprincipale_application_missionprincipale_id_fk + references missionprincipale on delete cascade, + application_element_id integer not null + constraint missionprincipale_application_application_element_id_fk + references element_application_element on delete cascade, + constraint missionprincipale_application_pk primary key (mission_id, application_element_id) +); + +create table missionprincipale_competence +( + mission_id integer not null + constraint missionprincipale_competence_missionprincipale_id_fk + references missionprincipale on delete cascade, + competence_element_id integer not null + constraint missionprincipale_competence_competence_element_id_fk + references element_competence_element on delete cascade, + constraint missionprincipale_competence_pk primary key (mission_id, competence_element_id) +); + +create table missionprincipale_domaine +( + mission_id integer not null + constraint missionprincipale_domaine_missionprincipale_id_fk + references missionprincipale on delete cascade, + domaine_id integer not null + constraint activite_domaine_domaine_id_fk + references metier_domaine on delete cascade, + constraint missionprincipale_domaine_pk primary key (mission_id, domaine_id) +); + +create table fichemetier_mission +( + id serial + constraint fichemetier_mission_pkey primary key, + fichemetier_id integer not null + constraint fichemetier_mission_fichemetier_id_fk + references fichemetier on delete cascade, + mission_id integer not null + constraint fichemetier_mission_missionprincipale_id_fk + references missionprincipale on delete cascade, + ordre integer default 0 not null +); +create unique index fichemetier_mission_id_uindex on fichemetier_mission (id); + +create table ficheposte_missionsadditionnelles +( + id serial + constraint ficheposte_missionsadditionnelles_pk primary key, + ficheposte_id integer not null + constraint ficheposte_missionsadditionnelles_ficheposte_id_fk + references ficheposte on delete cascade, + mission_id integer not null + constraint ficheposte_missionsadditionnelles_missionprincipale_id_fk + references missionprincipale on delete cascade, + retrait varchar(1024), + description text, + histo_creation timestamp default now() not null, + histo_createur_id integer default 0 not null + constraint ficheposte_missionsadditionnelles_createur_fk + references unicaen_utilisateur_user, histo_modification timestamp, histo_modificateur_id integer - constraint missionprincipale_unicaen_utilisateur_user_id_fk - references unicaen_utilisateur_user, + constraint ficheposte_missionsadditionnelles_modificateur_fk + references unicaen_utilisateur_user, histo_destruction timestamp, histo_destructeur_id integer - constraint missionprincipale_unicaen_utilisateur_user_id_fk2 - references unicaen_utilisateur_user + constraint ficheposte_missionsadditionnelles_destructeur_fk + references unicaen_utilisateur_user ); +create unique index ficheposte_missionsadditionnelles_id_uindex on ficheposte_missionsadditionnelles (id); +-- ---------------------------------------------------------------------------- +-- TRANSFERT DES DONNEES EXISTANTES +-- ---------------------------------------------------------------------------- +-- MISSIONS PRINCIPALES insert into missionprincipale (id, libelle, niveau_id) select a.id, al.libelle, a.niveaux_id from activite a - join activite_libelle al on a.id = al.activite_id -where a.histo_destruction IS NULL AND al. - histo_destruction IS NULL; - -drop table activite_libelle; +join activite_libelle al on a.id = al.activite_id +where a.histo_destruction IS NULL AND al.histo_destruction IS NULL; +-- TODO -- REPOSITIONNER LA SEQUENCE -- select max(id) from missionprincipale; -alter sequence missionprincipale_id_seq restart with 14; -- TODO changer avec valeur ci-dessus - -alter table activite_domaine rename to missionprincipale_domaine; -alter table missionprincipale_domaine rename column activite_id to mission_id; -alter table activite_description rename to missionprincipale_activite; -alter table missionprincipale_activite rename column activite_id to mission_id; -alter table activite_application rename to missionprincipale_application; -alter table missionprincipale_application rename column activite_id to mission_id; -alter table activite_competence rename to missionprincipale_competence; -alter table missionprincipale_competence rename column activite_id to mission_id; -drop table activite_formation; -alter table fichemetier_activite rename column activite_id to mission_id; -alter table fichemetier_activite drop constraint fichemetier_activite_activite_id_fk; -alter table fichemetier_activite add constraint fichemetier_activite_missionprincipale_id_fk foreign key (mission_id) references missionprincipale on delete cascade; -alter table fichemetier_activite rename to fichemetier_mission; +alter sequence missionprincipale_id_seq restart with 1000; + +-- LIEN MISSION <-> DOMAINE +insert into missionprincipale_domaine (mission_id, domaine_id) +select a.activite_id, a.domaine_id +from activite_domaine a; -alter table fichemetier_mission rename column position to ordre; -alter table fichemetier_mission rename column fiche_id to fichemetier_id; +-- LIEN MISSION <-> APPLICATION +insert into missionprincipale_application (mission_id, application_element_id) +select a.activite_id, a.application_element_id +from activite_application a; +-- LIEN MISSION <-> COMPETENCE +insert into missionprincipale_competence (mission_id, competence_element_id) +select a.activite_id, a.competence_element_id +from activite_competence a; -INSERT INTO unicaen_privilege_categorie (code, libelle, ordre, namespace) -VALUES ('missionprincipale', 'Gestion des missions principales', 800, 'FicheMetier\Provider\Privilege'); -INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE) -WITH d(code, lib, ordre) AS ( - SELECT 'missionprincipale_index', 'Accéder à l''index', 10 UNION - SELECT 'missionprincipale_afficher', 'Afficher', 20 UNION - SELECT 'missionprincipale_ajouter', 'Ajouter', 30 UNION - SELECT 'missionprincipale_modifier', 'Modifier', 40 UNION - SELECT 'missionprincipale_historiser', 'Historiser/Restaurer', 50 UNION - SELECT 'missionprincipale_supprimer', 'Supprimer', 60 -) -SELECT cp.id, d.code, d.lib, d.ordre -FROM d -JOIN unicaen_privilege_categorie cp ON cp.CODE = 'missionprincipale'; +-- LIEN MISSION <-> ACTIVITE +-- TODO -- Verifier que l'utilisateur 0 represente bien l'application -- +alter table missionprincipale_activite alter column histo_createur_id set default 0; +alter table missionprincipale_activite alter column histo_creation set default now(); +insert into missionprincipale_activite (id, mission_id, libelle, ordre) +select a.id, a.activite_id, a.description, a.ordre +from activite_description a +where a.histo_destruction is null; +-- TODO -- REPOSITIONNER LA SEQUENCE -- +select max(id) from missionprincipale_activite; +alter sequence missionprincipale_activite_id_seq restart with 10000; -alter table ficheposte_activite_specifique drop constraint ficheposte_activite_specifique_activite_id_fk; -alter table ficheposte_activite_specifique - add constraint ficheposte_activite_specifique_missionprincipale_id_fk - foreign key (activite_id) references missionprincipale - on delete cascade; -alter table ficheposte_activite_specifique rename to ficheposte_missionsadditionnelles; -create sequence ficheposte_missionsadditionnelles_id_seq; -alter table ficheposte_missionsadditionnelles alter column id set default nextval('ficheposte_missionsadditionnelles_id_seq'); -alter sequence ficheposte_missionsadditionnelles_id_seq owned by ficheposte_missionsadditionnelles.id; +-- LIEN FICHE_METIER <-> MISSION +insert into fichemetier_mission (id, fichemetier_id, mission_id, ordre) +select a.id, a.fiche_id as fichemetier_id, a.activite_id as mission_id, a.position as ordre +from fichemetier_activite a; +-- TODO -- REPOSITIONNER LA SEQUENCE -- +select max(id) from fichemetier_mission; +alter sequence fichemetier_mission_id_seq restart with 1000; + + -- LIEN FICHE_POSTE <-> MISSION +insert into ficheposte_missionsadditionnelles (id, ficheposte_id, mission_id, retrait, description) +select fas.id as id, fs.ficheposte_id as ficheposte_id, fas.activite_id as mission_id, fas.retrait, fas.description +from ficheposte_activite_specifique fas +join ficheposte_specificite fs on fs.id=fas.specificite_id; +-- TODO -- REPOSITIONNER LA SEQUENCE -- +select max(id) from ficheposte_missionsadditionnelles; alter sequence ficheposte_missionsadditionnelles_id_seq restart with 1000; +-- ---------------------------------------------------------------------------- +-- RETRAIT DES TABLES NON UTILISEES +-- ---------------------------------------------------------------------------- + +drop table activite_libelle; +drop table activite_description; +drop table activite_domaine; +drop table activite_application; +drop table activite_competence; +drop table activite_formation; +drop table fichemetier_activite; +drop table ficheposte_activite_specifique; +drop table activite -alter table ficheposte_missionsadditionnelles rename column specificite_id to ficheposte_id; -alter table ficheposte_missionsadditionnelles alter column histo_creation set default now(); -alter table ficheposte_missionsadditionnelles alter column histo_createur_id set default 0; -alter table ficheposte_missionsadditionnelles drop constraint specificite_activite_specificite_poste_id_fk; -alter table ficheposte_missionsadditionnelles add constraint ficheposte_missionsadditionnelles_ficheposte_id_fk foreign key (ficheposte_id) references ficheposte on delete cascade; -alter table ficheposte_missionsadditionnelles rename column activite_id to mission_id; ``` \ No newline at end of file diff --git a/module/Application/src/Application/Controller/IndexController.php b/module/Application/src/Application/Controller/IndexController.php index 8213529587df64e9b3dd0a0bd2a206edf32bab2c..735da93571cd1fbf95b9bed001c067de87520b09 100755 --- a/module/Application/src/Application/Controller/IndexController.php +++ b/module/Application/src/Application/Controller/IndexController.php @@ -39,7 +39,7 @@ class IndexController extends AbstractActionController { /** @var User $connectedUser */ $connectedUser = $this->getUserService()->getConnectedUser(); - if ($connectedUser === null) return new ViewModel([]); + if ($connectedUser === null) return new ViewModel(['user' => null]); $agent = $this->getAgentService()->getAgentByUser($connectedUser); if ($agent !== null && $agent->getUtilisateur() === null) { diff --git a/module/Formation/Module.php b/module/Formation/Module.php index 14feee181c9189ae2184ee6a91df1f2f43d97b0e..66207af3aae033b780ecd64cf0e016d00d131498 100755 --- a/module/Formation/Module.php +++ b/module/Formation/Module.php @@ -2,14 +2,14 @@ namespace Formation; +use Laminas\Config\Factory as ConfigFactory; use Laminas\Loader\StandardAutoloader; +use Laminas\Mvc\Console\Controller\AbstractConsoleController; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\Mvc\ModuleRouteListener; use Laminas\Mvc\MvcEvent; use Laminas\Stdlib\ArrayUtils; use Laminas\Stdlib\Glob; -use Laminas\Config\Factory as ConfigFactory; -use UnicaenDbImport\Controller\ConsoleController; class Module { @@ -24,7 +24,7 @@ class Module $sharedEvents->attach(AbstractActionController::class, 'dispatch', function($e) { /** @var $e MvcEvent */ $controller = $e->getTarget(); - $consoleType = ($controller instanceof ConsoleController); + $consoleType = ($controller instanceof AbstractConsoleController) ; if (!$consoleType) { $hostname = $controller->getRequest()->getUri()->getHost(); if (preg_match('/mes-formations.*/', $hostname)) { diff --git a/module/Referentiel/src/Referentiel/Controller/SynchronisationConsoleController.php b/module/Referentiel/src/Referentiel/Controller/SynchronisationConsoleController.php index e63f466a38e626eb3a1041abddac7b3b6a16dfa1..577e7fa0bf68377973e7c481dfbd864acff3151a 100644 --- a/module/Referentiel/src/Referentiel/Controller/SynchronisationConsoleController.php +++ b/module/Referentiel/src/Referentiel/Controller/SynchronisationConsoleController.php @@ -2,11 +2,12 @@ namespace Referentiel\Controller; +use Laminas\Mvc\Console\Controller\AbstractConsoleController; use Laminas\Mvc\Controller\AbstractActionController; use Referentiel\Service\Synchronisation\SynchronisationServiceAwareTrait; use UnicaenDbImport\Controller\ConsoleController; -class SynchronisationConsoleController extends ConsoleController { +class SynchronisationConsoleController extends AbstractConsoleController { use SynchronisationServiceAwareTrait; private array $configs;