Skip to content
Snippets Groups Projects
Commit 24c4fa2c authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

refaction du script de migration des activités en missions principales

parent acae33a3
No related branches found
No related tags found
No related merge requests found
```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,
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,
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
......@@ -23,70 +46,175 @@ create table missionprincipale
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 ficheposte_missionsadditionnelles_modificateur_fk
references unicaen_utilisateur_user,
histo_destruction timestamp,
histo_destructeur_id integer
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;
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;
alter table fichemetier_mission rename column position to ordre;
alter table fichemetier_mission rename column fiche_id to fichemetier_id;
-- LIEN MISSION <-> DOMAINE
insert into missionprincipale_domaine (mission_id, domaine_id)
select a.activite_id, a.domaine_id
from activite_domaine a;
-- LIEN MISSION <-> APPLICATION
insert into missionprincipale_application (mission_id, application_element_id)
select a.activite_id, a.application_element_id
from activite_application 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 <-> COMPETENCE
insert into missionprincipale_competence (mission_id, competence_element_id)
select a.activite_id, a.competence_element_id
from activite_competence a;
-- 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
......@@ -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) {
......
......@@ -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)) {
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment