diff --git a/data/ose_schema.sql b/data/ose_schema.sql
index eefdd81fb67dc4ac31de7dbbacc7d13bcdfd66eb..309ef26ecb22f2548564e4df708281b49affee5c 100644
--- a/data/ose_schema.sql
+++ b/data/ose_schema.sql
@@ -1,3 +1,26 @@
+create or replace view v_role_personnel as
+ select r.id, p.id personnel_id, p.NOM_USUEL, p.PRENOM, p.EMAIL, tr.id type_role_id, tr.CODE, tr.LIBELLE, s.id structure_id, s.LIBELLE_COURT, trpr.php_role_id
+ from ROLE r
+ inner join PERSONNEL p on r.PERSONNEL_ID = p.ID
+ inner join STRUCTURE s on r.STRUCTURE_ID = s.ID
+ inner join TYPE_ROLE tr on r.TYPE_ID = tr.ID
+ inner join TYPE_ROLE_PHP_ROLE trpr on r.TYPE_ID = trpr.TYPE_ROLE_ID
+ where s.STRUCTURE_NIV2_ID in (
+ -- liste des ids des structures de niveau 2 qui possèdent, elles-mêmes ou l'une de leurs sous-structures, au moins 1 élément pédagogique
+ SELECT DISTINCT sniv2.ID
+ FROM STRUCTURE sniv2
+ INNER JOIN STRUCTURE stmp ON (sniv2.ID = stmp.STRUCTURE_NIV2_ID) AND (stmp.HISTO_DESTRUCTION IS NULL AND stmp.HISTO_DESTRUCTEUR_ID IS NULL)
+ INNER JOIN ELEMENT_PEDAGOGIQUE ep ON (stmp.ID = ep.STRUCTURE_ID) AND (ep.HISTO_DESTRUCTION IS NULL AND ep.HISTO_DESTRUCTEUR_ID IS NULL)
+ WHERE (sniv2.HISTO_DESTRUCTION IS NULL AND sniv2.HISTO_DESTRUCTEUR_ID IS NULL)
+ );
+
+
+
+
+
+
+
+
CREATE TABLE "OSE"."DOSSIER" (
"ID" NUMBER(*,0) NOT NULL,
diff --git a/data/sauv.sql b/data/sauv.sql
index f86801ab8e19152f7d6f19f008c48471598f8234..d349f905b8d9320397972cfa5d02e5a2ed61da0b 100644
--- a/data/sauv.sql
+++ b/data/sauv.sql
@@ -1,4 +1,70 @@
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '21255' and s.source_code = 'I11' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '26771' and s.source_code = 'I12' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '4173' and s.source_code = 'I13' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '65415' and s.source_code = 'M17' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '255' and s.source_code = 'M17' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '2489' and s.source_code = 'M17' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '63573' and s.source_code = 'M17' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '52917' and s.source_code = 'M17' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '4552' and s.source_code = 'U01' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '2311' and s.source_code = 'U02' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '5781' and s.source_code = 'U02' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '987' and s.source_code = 'U02' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '26902' and s.source_code = 'U02' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '26902' and s.source_code = 'U26' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '25236' and s.source_code = 'U03' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '25428' and s.source_code = 'U04' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '476' and s.source_code = 'U07' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '46070' and s.source_code = 'U09' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '154' and s.source_code = 'U10' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '5471' and s.source_code = 'U10' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '27' and s.source_code = 'U10' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '15139' and s.source_code = 'U10' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '26899' and s.source_code = 'U10' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '68179' and s.source_code = 'U26' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '4640' and s.source_code = 'U26' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '5177' and s.source_code = 'U26' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '4628' and s.source_code = 'U36' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '5170' and s.source_code = 'U36' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '63191' and s.source_code = 'U55' union
+select 'insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, '||p.id||', '||s.id||');' from personnel p, structure s where p.source_code = '5378' and s.source_code = 'U55'
+;
+
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 1008, 8680);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 1242, 8468);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 1247, 8495);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 1371, 8757);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 1476, 8472);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 1560, 8474);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 1711, 8473);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 2000, 8474);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 2132, 8467);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 221, 8529);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 2515, 8498);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 2599, 8529);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 261, 8498);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 2775, 8467);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 2807, 8494);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 2843, 8474);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 297, 8467);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 3004, 8469);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 3199, 8474);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 353, 8466);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 357, 8529);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 3766, 8493);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 3853, 8467);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 3853, 8529);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 3866, 8498);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 4030, 8498);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 4057, 8474);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 702, 8498);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 800, 8757);
+insert into role (ID , TYPE_ID , SOURCE_CODE , SOURCE_ID , HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, PERSONNEL_ID , STRUCTURE_ID) values (role_id_seq.nextval, 8, 10000+role_id_seq.currval, 2, 1, 1, 911, 8680);
+
+
+
+
delete from TYPE_PIECE_JOINTE_STATUT;
INSERT INTO TYPE_PIECE_JOINTE_STATUT (ID,TYPE_PIECE_JOINTE_ID,STATUT_INTERVENANT_ID,OBLIGATOIRE,SEUIL_HETD) VALUES (
diff --git a/doc/utilisateurs-ose.xls b/doc/utilisateurs-ose.xls
index dda8e3840de7608cc29f50fbfff1661f6f2b5067..202f0abe1815b5ad0440790b5a571469fd303e03 100644
Binary files a/doc/utilisateurs-ose.xls and b/doc/utilisateurs-ose.xls differ
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.VRolePersonnel.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.VRolePersonnel.dcm.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8298c865159ebb4e6b4da9f7c3a0d29478985ace
--- /dev/null
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.VRolePersonnel.dcm.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
+ <entity name="Application\Entity\Db\VRolePersonnel" table="V_ROLE_PERSONNEL">
+ <id name="id" type="integer" column="ID" />
+ <field name="phpRoleId" type="string" column="PHP_ROLE_ID" length="64" nullable="false"/>
+ <many-to-one field="role" target-entity="Application\Entity\Db\Role">
+ <join-columns>
+ <join-column name="ID" referenced-column-name="ID"/>
+ </join-columns>
+ </many-to-one>
+ <many-to-one field="structure" target-entity="Application\Entity\Db\Structure">
+ <join-columns>
+ <join-column name="STRUCTURE_ID" referenced-column-name="ID"/>
+ </join-columns>
+ </many-to-one>
+ <many-to-one field="typeRole" target-entity="Application\Entity\Db\TypeRole">
+ <join-columns>
+ <join-column name="TYPE_ROLE_ID" referenced-column-name="ID"/>
+ </join-columns>
+ </many-to-one>
+ <many-to-one field="personnel" target-entity="Application\Entity\Db\Personnel">
+ <join-columns>
+ <join-column name="PERSONNEL_ID" referenced-column-name="ID"/>
+ </join-columns>
+ </many-to-one>
+ </entity>
+</doctrine-mapping>
diff --git a/module/Application/src/Application/Entity/Db/VRolePersonnel.php b/module/Application/src/Application/Entity/Db/VRolePersonnel.php
new file mode 100644
index 0000000000000000000000000000000000000000..2614b7b828c24faa931c834d4d9a5609d3f26241
--- /dev/null
+++ b/module/Application/src/Application/Entity/Db/VRolePersonnel.php
@@ -0,0 +1,99 @@
+<?php
+
+namespace Application\Entity\Db;
+
+/**
+ * VRolePersonnel
+ */
+class VRolePersonnel
+{
+ /**
+ * @var integer
+ */
+ protected $id;
+
+ /**
+ * @var \Application\Entity\Db\Role
+ */
+ protected $role;
+
+ /**
+ * @var \Application\Entity\Db\Structure
+ */
+ protected $structure;
+
+ /**
+ * @var \Application\Entity\Db\TypeRole
+ */
+ protected $typeRole;
+
+ /**
+ * @var \Application\Entity\Db\Personnel
+ */
+ protected $personnel;
+
+ /**
+ * @var string
+ */
+ protected $phpRoleId;
+
+ /**
+ * Get id
+ *
+ * @return integer
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+
+ /**
+ * Get role
+ *
+ * @return \Application\Entity\Db\Role
+ */
+ public function getRole()
+ {
+ return $this->role;
+ }
+
+ /**
+ * Get structure
+ *
+ * @return \Application\Entity\Db\Structure
+ */
+ public function getStructure()
+ {
+ return $this->structure;
+ }
+
+ /**
+ * Get typeRole
+ *
+ * @return \Application\Entity\Db\TypeRoleVRolePersonnel
+ */
+ public function getTypeRole()
+ {
+ return $this->typeRole;
+ }
+
+ /**
+ * Get personnel
+ *
+ * @return \Application\Entity\Db\Personnel
+ */
+ public function getPersonnel()
+ {
+ return $this->personnel;
+ }
+
+ /**
+ * Get phpRoleId
+ *
+ * @return string
+ */
+ public function getPhpRoleId()
+ {
+ return $this->phpRoleId;
+ }
+}
diff --git a/module/Application/src/Application/Provider/Role/RoleProvider.php b/module/Application/src/Application/Provider/Role/RoleProvider.php
index 4667a37065fcee3882a516adae94df6113ab24b7..d61cfd774e7183bc749977dabad4426a654f018d 100644
--- a/module/Application/src/Application/Provider/Role/RoleProvider.php
+++ b/module/Application/src/Application/Provider/Role/RoleProvider.php
@@ -11,7 +11,6 @@ use Application\Acl\ComposanteRole;
use Application\Acl\ComposanteDbRole;
use Application\Entity\Db\Role as RoleEntity;
use Application\Service\Role as RoleService;
-use Application\Service\TypeRolePhpRole as TypeRolePhpRoleService;
use Application\Service\RoleUtilisateur as RoleUtilisateurService;
use Zend\Permissions\Acl\Role\GenericRole;
@@ -37,19 +36,16 @@ class RoleProvider implements ProviderInterface
/**
* Constructeur.
*
- * @param TypeRolePhpRoleService $typeRolePhpRole
* @param RoleService $serviceRole
* @param RoleUtilisateurService $serviceRoleUtilisateur
* @param array $config
*/
public function __construct(
- TypeRolePhpRoleService $typeRolePhpRole,
RoleService $serviceRole,
RoleUtilisateurService $serviceRoleUtilisateur,
$config = null)
{
$this
- ->setServiceTypeRolePhpRole($typeRolePhpRole)
->setServiceRole($serviceRole)
->setServiceRoleUtilisateur($serviceRoleUtilisateur);
@@ -76,14 +72,12 @@ class RoleProvider implements ProviderInterface
// rôle père
$roleComposante = new ComposanteRole();
// rôles métier (importés d'Harpege) correspondant au ROLE_ID PHP
- $qb = $this->serviceTypeRolePhpRole->finderByPhpRole($roleComposante->getRoleId());
+ $qb = $this->serviceRole->finderRolePersonnelByRole($roleComposante->getRoleId());
$rolesComposante = array();
- foreach ($qb->getQuery()->getResult() as $trpr) { /* @var $trpr \Application\Entity\Db\TypeRolePhpRole */
- $qb2 = $this->serviceRole->finderByTypeRole($trpr->getTypeRole());
- $qb2 = $this->serviceRole->finderByOffreFormationExistante($qb2); // la structure doit avoir une offre de formation
- $rolesComposante += $this->serviceRole->getList($qb2);
+ foreach ($qb->getQuery()->getResult() as $vrp) { /* @var $vrp \Application\Entity\Db\VRolePersonnel */
+ $rolesComposante[] = $vrp->getRole();
}
-
+
/**
* Rôles utilisateurs au sein de l'application (tables UTILISATEUR, ROLE_UTILISATEUR et ROLE_UTILISATEUR_LINKER)
*/
@@ -131,11 +125,6 @@ class RoleProvider implements ProviderInterface
return new GenericRole($roleId);
}
- /**
- * @var TypeRolePhpRoleService
- */
- private $serviceTypeRolePhpRole;
-
/**
* @var RoleService
*/
@@ -146,12 +135,6 @@ class RoleProvider implements ProviderInterface
*/
private $serviceRoleUtilisateur;
- public function setServiceTypeRolePhpRole(TypeRolePhpRoleService $serviceTypeRolePhpRole)
- {
- $this->serviceTypeRolePhpRole = $serviceTypeRolePhpRole;
- return $this;
- }
-
public function setServiceRole(RoleService $serviceRole)
{
$this->serviceRole = $serviceRole;
diff --git a/module/Application/src/Application/Provider/Role/RoleProviderFactory.php b/module/Application/src/Application/Provider/Role/RoleProviderFactory.php
index 9b6992e2f7fb79548fe313bbbcded3a287c248d6..323e1f232b18d1af4712e9db2e4cae1a0da77abc 100644
--- a/module/Application/src/Application/Provider/Role/RoleProviderFactory.php
+++ b/module/Application/src/Application/Provider/Role/RoleProviderFactory.php
@@ -21,7 +21,6 @@ class RoleProviderFactory implements FactoryInterface
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
- $serviceTypeRolePhpRole = $serviceLocator->get('applicationTypeRolePhpRole'); /* @var $serviceTypeRolePhpRole \Application\Service\TypeRolePhpRole */
$serviceRole = $serviceLocator->get('applicationRole'); /* @var $serviceRole \Application\Service\Role */
$serviceUtilisateurRole = $serviceLocator->get('applicationRoleUtilisateur'); /* @var $serviceUtilisateurRole \Application\Service\RoleUtilisateur */
$config = $serviceLocator->get('BjyAuthorize\Config');
@@ -34,6 +33,6 @@ class RoleProviderFactory implements FactoryInterface
$providerConfig = $config['role_providers']['ApplicationRoleProvider'];
- return new RoleProvider($serviceTypeRolePhpRole, $serviceRole, $serviceUtilisateurRole, $providerConfig);
+ return new RoleProvider($serviceRole, $serviceUtilisateurRole, $providerConfig);
}
}
\ No newline at end of file
diff --git a/module/Application/src/Application/Service/Role.php b/module/Application/src/Application/Service/Role.php
index f968169051e621c5c6d0a526da65aee322ec78ec..dcf2a5df0fc9bdf7112d6c5cc74a1ce8148ffb3c 100644
--- a/module/Application/src/Application/Service/Role.php
+++ b/module/Application/src/Application/Service/Role.php
@@ -70,28 +70,6 @@ class Role extends AbstractEntityService
return $qb;
}
- /**
- *
- * @param QueryBuilder $qb
- * @param string $alias
- * @return QueryBuilder
- */
- public function finderByOffreFormationExistante(QueryBuilder $qb = null, $alias = null)
- {
- list($qb, $alias) = $this->initQuery($qb, $alias);
-
- $qb
- ->select("$alias, tr123, s")
- ->distinct()
- ->innerJoin('r.type', 'tr123')
- ->innerJoin('r.structure', 's')
- ->innerJoin('s.elementPedagogique', 'ep');
-// ->where('tr.code <> :code')->setParameter('code', 'IND')
-// ->andWhere('s.niveau = :niv')->setParameter('niv', 2);
-
- return $qb;
- }
-
/**
* Retourne une liste d'entités en fonction du QueryBuilder donné
*
@@ -115,4 +93,26 @@ class Role extends AbstractEntityService
return parent::getList($qb);
}
+
+ /**
+ * @param \Zend\Permissions\Acl\Role\RoleInterface|string $role
+ * @return QueryBuilder
+ */
+ public function finderRolePersonnelByRole($role)
+ {
+ if ($role instanceof \Zend\Permissions\Acl\Role\RoleInterface) {
+ $role = $role->getRoleId();
+ }
+
+ $qb = $this->getEntityManager()->createQueryBuilder()
+ ->from("Application\Entity\Db\VRolePersonnel", "v")
+ ->select("v, tr, s, p")
+ ->join("v.typeRole", "tr")
+ ->join("v.structure", "s")
+ ->join("v.personnel", "p")
+ ->orderBy("v.structure, v.typeRole")
+ ->andWhere("v.phpRoleId = :roleId")->setParameter('roleId', $role);
+
+ return $qb;
+ }
}
\ No newline at end of file