Commit cd5fc8c7 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Complétion des fichiers sql du module formation et de unicaen-renderer

parent c58d5a76
Loading
Loading
Loading
Loading
+18 −22
Changes for doc/release-notes/5.0.0/formation/002_privilege.sql: 18 added lines, 22 removed lines.
Original line number Diff line number Diff line
-- MODULE DE FORMATION ----------------------------------------------------------------------------------------------------

create sequence if not exists categorie_privilege_id_seq;

alter table categorie_privilege alter column id set default nextval('categorie_privilege_id_seq');
alter sequence categorie_privilege_id_seq owned by categorie_privilege.id;

alter sequence categorie_privilege_id_seq restart with 5000;

-- INDEX --------------------------------------------------------------------------------------------------------------
INSERT INTO categorie_privilege (code, libelle, ordre)
VALUES ('formation', 'Module de formation', 5000);



INSERT INTO privilege(id, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'index', 'Accès à l''index du module de formation', 1 UNION
@@ -22,6 +19,7 @@ SELECT nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
FROM d
JOIN categorie_privilege cp ON cp.CODE = 'formation';


-- MODULE --------------------------------------------------------------------------------------------------------------

INSERT INTO categorie_privilege (code, libelle, ordre)
@@ -46,6 +44,20 @@ JOIN categorie_privilege cp ON cp.CODE = 'formation_module';
INSERT INTO categorie_privilege (code, libelle, ordre)
VALUES ('formation_formation', 'Gestion des formations', 5200);

INSERT INTO privilege(id, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'index', 'Accès à l''index des actions de formation', 1 UNION
    SELECT 'afficher', 'Afficher une action de formation', 2 UNION
    SELECT 'ajouter', 'Ajouter une action de formation', 3 UNION
    SELECT 'modifier', 'Modifier une action de formation', 4 UNION
    SELECT 'historiser', 'Historiser/Restaurer une action de formation', 5 UNION
    SELECT 'supprimer', 'Supprimer une action de formation', 6
)
SELECT nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
FROM d
     JOIN categorie_privilege cp ON cp.CODE = 'formation_formation';
-- SESSION -------------------------------------------------------------------------------------------------------------

INSERT INTO privilege(id, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'index', 'Accès à l''index des modules de formation', 1 UNION
@@ -60,11 +72,11 @@ SELECT nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
FROM d
JOIN categorie_privilege cp ON cp.CODE = 'formation_formation';

-- SESSION -------------------------------------------------------------------------------------------------------------

INSERT INTO categorie_privilege (code, libelle, ordre)
VALUES ('formation_session', 'Gestion des sessions de formations', 5300);

-- SEANCE --------------------------------------------------------------------------------------------------------------

INSERT INTO privilege(id, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'index', 'Accès à l''index des sessions de formation', 1 UNION
@@ -79,25 +91,9 @@ SELECT nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
FROM d
JOIN categorie_privilege cp ON cp.CODE = 'formation_session';

-- SEANCE --------------------------------------------------------------------------------------------------------------

INSERT INTO categorie_privilege (code, libelle, ordre)
VALUES ('formation_seance', 'Gestion des séances de formations', 5400);

INSERT INTO privilege(id, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'index', 'Accès à l''index des séances de formation', 1 UNION
    SELECT 'afficher', 'Afficher une séance de formation', 2 UNION
    SELECT 'ajouter', 'Ajouter une séance de formation', 3 UNION
    SELECT 'modifier', 'Modifier une séance de formation', 4 UNION
    SELECT 'historiser', 'Historiser/Restaurer une séance de formation', 5 UNION
    SELECT 'supprimer', 'Supprimer une séance de formation', 6 UNION
    SELECT 'renseigner_presence', 'Renseigner les présences', 7
)
SELECT nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
FROM d
JOIN categorie_privilege cp ON cp.CODE = 'formation_seance';

-- INSCRIPTION ---------------------------------------------------------------------------------------------------------

INSERT INTO categorie_privilege (code, libelle, ordre)
+0 −7
Changes for doc/release-notes/5.0.0/formation/003_donnees.sql: 0 added lines, 7 removed lines.
Original line number Diff line number Diff line
-- ROLE ----------------------------------------------------------------------------------------------------------------

INSERT INTO role (id, code, libelle, source_code, source_id, role_id, is_default, ldap_filter, attrib_auto, these_dep, type_structure_dependant_id, ordre_affichage, histo_createur_id)
select nextval('role_id_seq'), 'FORMATEUR', 'Formateur·trice', 'SYGAL::FORMATEUR', 1, 'Formateur·trice', false, null, false, false, 1, 'formation_aab', 1;
INSERT INTO role (id, code, libelle, source_code, source_id, role_id, is_default, ldap_filter, attrib_auto, these_dep, type_structure_dependant_id, ordre_affichage, histo_createur_id)
select nextval('role_id_seq'), 'GEST_FORMATION', 'Gestionnaire de formation', 'SYGAL::GEST_FORMATION', 1, 'Gestionnaire de formation', false, null, false, false, 1, 'formation_aaa', 1;

-- NATURE DE DOCUMENT --------------------------------------------------------------------------------------------------

INSERT INTO nature_fichier (id, code, libelle) VALUES (nextval('nature_fichier_id_seq'), 'SIGNATURE_FORMATION', 'Signature pour les formations');
+330 −0
Changes for doc/release-notes/5.0.0/formation/004_profil_role_affectation.sql: 330 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- PROFIL --------------------------------------------------------------------------------------------------------------

INSERT INTO profil (id, libelle, role_id)
VALUES (nextval('profil_id_seq'), 'Formateur·trice', 'FORMATEUR');
INSERT INTO profil (id, libelle, role_id)
VALUES (nextval('profil_id_seq'), 'Gestionnaire de formation', 'GEST_FORMATION');

-- ROLE ----------------------------------------------------------------------------------------------------------------

INSERT INTO role (id, code, libelle, source_code, source_id, role_id, is_default, ldap_filter, attrib_auto, these_dep, type_structure_dependant_id, ordre_affichage, histo_createur_id)
select nextval('role_id_seq'), 'FORMATEUR', 'Formateur·trice', 'SYGAL::FORMATEUR', 1, 'Formateur·trice', false, null, false, false, 1, 'formation_aab', 1;
INSERT INTO role (id, code, libelle, source_code, source_id, role_id, is_default, ldap_filter, attrib_auto, these_dep, type_structure_dependant_id, ordre_affichage, histo_createur_id)
select nextval('role_id_seq'), 'GEST_FORMATION', 'Gestionnaire de formation', 'SYGAL::GEST_FORMATION', 1, 'Gestionnaire de formation', false, null, false, false, 1, 'formation_aaa', 1;

-- AFFECTATION DES RÔLES AUX PROFILS -----------------------------------------------------------------------------------

insert into PROFIL_TO_ROLE (PROFIL_ID, ROLE_ID)
with data(PROFIL_CODE, ROLE_ROLE_ID) as (
    select 'FORMATEUR', 'Formateur·trice' union
    select 'GEST_FORMATION', 'Gestionnaire de formation'
)
select pr.id, r.id
from data
join PROFIL pr on pr.ROLE_ID = data.PROFIL_CODE
join role r on r.ROLE_ID = data.ROLE_ROLE_ID
where not exists (
    select * from PROFIL_TO_ROLE where PROFIL_ID = pr.id and ROLE_ID = r.id
);

-- AFFECTATION DES PRIVILÈGES AUX PROFILS ADMIN TECH / GESTIONNAIRE DE FORMATION ---------------------------------------

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation'::text, 'index'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
join PROFIL on profil.ROLE_ID in ('ADMIN_TECH','GEST_FORMATION')
join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
    select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_module'::text, 'index'::text union
    select 'formation_module'::text, 'afficher'::text union
    select 'formation_module'::text, 'ajouter'::text union
    select 'formation_module'::text, 'modifier'::text union
    select 'formation_module'::text, 'historiser'::text union
    select 'formation_module'::text, 'supprimer'::text union
    select 'formation_module'::text, 'catalogue'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH','GEST_FORMATION')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_formation'::text, 'index'::text union
    select 'formation_formation'::text, 'afficher'::text union
    select 'formation_formation'::text, 'ajouter'::text union
    select 'formation_formation'::text, 'modifier'::text union
    select 'formation_formation'::text, 'historiser'::text union
    select 'formation_formation'::text, 'supprimer'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH','GEST_FORMATION')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_session'::text, 'index'::text union
    select 'formation_session'::text, 'afficher'::text union
    select 'formation_session'::text, 'ajouter'::text union
    select 'formation_session'::text, 'modifier'::text union
    select 'formation_session'::text, 'historiser'::text union
    select 'formation_session'::text, 'supprimer'::text union
    select 'formation_session'::text, 'gerer_inscription'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH','GEST_FORMATION')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_seance'::text, 'index' union
    select 'formation_seance'::text, 'afficher' union
    select 'formation_seance'::text, 'ajouter' union
    select 'formation_seance'::text, 'modifier' union
    select 'formation_seance'::text, 'historiser' union
    select 'formation_seance'::text, 'supprimer' union
    select 'formation_seance'::text, 'renseigner_presence'
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH','GEST_FORMATION')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    );

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_inscription'::text, 'index'::text union
    select 'formation_inscription'::text, 'afficher'::text union
    select 'formation_inscription'::text, 'ajouter'::text union
    select 'formation_inscription'::text, 'historiser'::text union
    select 'formation_inscription'::text, 'supprimer'::text union
    select 'formation_inscription'::text, 'gerer_liste'::text union
    select 'formation_inscription'::text, 'generer_convocation'::text union
    select 'formation_inscription'::text, 'generer_attestation'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH','GEST_FORMATION')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
);

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_enquete'::text, 'question_afficher'::text union
    select 'formation_enquete'::text, 'question_ajouter'::text union
    select 'formation_enquete'::text, 'question_modifier'::text union
    select 'formation_enquete'::text, 'question_historiser'::text union
    select 'formation_enquete'::text, 'question_supprimer'::text union
    select 'formation_enquete'::text, 'reponse_repondre'::text union
    select 'formation_enquete'::text, 'reponse_resultat'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH','GEST_FORMATION')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
);

-- AFFECTATION DES PRIVILÈGES AUX PROFILS DOCTORANT --------------------------------------------------------------------

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation'::text, 'index_doctorant'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('DOCTORANT')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_module'::text, 'afficher'::text union
    select 'formation_module'::text, 'catalogue'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('DOCTORANT')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_formation'::text, 'afficher'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('DOCTORANT')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_inscription'::text, 'ajouter'::text union
    select 'formation_inscription'::text, 'historiser'::text union
    select 'formation_inscription'::text, 'supprimer'::text union
    select 'formation_inscription'::text, 'generer_convocation'::text union
    select 'formation_inscription'::text, 'generer_attestation'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('DOCTORANT')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    );

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_enquete'::text, 'reponse_repondre'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('DOCTORANT')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    );

-- AFFECTATION DES PRIVILÈGES AUX PROFILS FORMATEUR --------------------------------------------------------------------

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'index_formateur'::text, 'index'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('FORMATEUR')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_module'::text, 'afficher'::text union
    select 'formation_module'::text, 'catalogue'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('FORMATEUR')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_formation'::text, 'afficher'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('FORMATEUR')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_session'::text, 'afficher'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('FORMATEUR')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_seance'::text, 'afficher' union
    select 'formation_seance'::text, 'renseigner_presence'
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('FORMATEUR')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    );

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'formation_enquete'::text, 'reponse_resultat'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('FORMATEUR')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    );

-- REAPPLICATION AUX ROLES ---------------------------------------------------------------------------------------------

insert into ROLE_PRIVILEGE (ROLE_ID, PRIVILEGE_ID)
select p2r.ROLE_ID, pp.PRIVILEGE_ID
from PROFIL_TO_ROLE p2r
         join profil pr on pr.id = p2r.PROFIL_ID
         join PROFIL_PRIVILEGE pp on pp.PROFIL_ID = pr.id
where not exists (
        select * from role_privilege where role_id = p2r.role_id and privilege_id = pp.privilege_id
    )
;






+39 −15

File changed.

Preview size limit exceeded, changes collapsed.

+68 −0
Changes for doc/release-notes/5.0.0/unicaen-renderer/003_profil_role_affectation.sql: 68 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- AFFECTATION DES PRIVILÈGES AUX PROFILS ADMIN TECH -------------------------------------------------------------------

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'documentmacro'::text, 'documentmacro_index'::text union
    select 'documentmacro'::text, 'documentmacro_ajouter'::text union
    select 'documentmacro'::text, 'documentmacro_modifier'::text union
    select 'documentmacro'::text, 'documentmacro_supprimer'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
join PROFIL on profil.ROLE_ID in ('ADMIN_TECH')
join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
    select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'documenttemplate'::text, 'documenttemplate_index'::text union
    select 'documenttemplate'::text, 'documenttemplate_modifier'::text union
    select 'documenttemplate'::text, 'documenttemplate_supprimer'::text union
    select 'documenttemplate'::text, 'documenttemplate_ajouter'::text union
    select 'documenttemplate'::text, 'documenttemplate_afficher'::text
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
    ) ;

INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'documentcontenu'::text, 'documentcontenu_index'::text union
    select 'documentcontenu'::text, 'documentcontenu_afficher'::text union
    select 'documentcontenu'::text, 'documentcontenu_supprimer'
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join PRIVILEGE p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (
        select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id
);

-- REAPPLICATION AUX ROLES ---------------------------------------------------------------------------------------------

insert into ROLE_PRIVILEGE (ROLE_ID, PRIVILEGE_ID)
select p2r.ROLE_ID, pp.PRIVILEGE_ID
from PROFIL_TO_ROLE p2r
         join profil pr on pr.id = p2r.PROFIL_ID
         join PROFIL_PRIVILEGE pp on pp.PROFIL_ID = pr.id
where not exists (
        select * from role_privilege where role_id = p2r.role_id and privilege_id = pp.privilege_id
    )
;