From 902ddec45f400c8ca9a887a08c3df2003aa3cd3f Mon Sep 17 00:00:00 2001 From: gauthierb <gauthierb@d57fa8bc-6af1-4de9-8b7d-78e900e231e7> Date: Wed, 2 Jul 2014 09:21:46 +0000 Subject: [PATCH] =?UTF-8?q?Correction=20:=20Une=20reponsabilit=C3=A9=20str?= =?UTF-8?q?ucturelle=20n'est=20prise=20en=20compte=20que=20si=20la=20struc?= =?UTF-8?q?ture=20(OU=20L'UNE=20DE=20SES=20SOUS-STRUCTURES)=20poss=C3=A8de?= =?UTF-8?q?=20une=20offre=20de=20formation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/ose_schema.sql | 23 ++++ data/sauv.sql | 66 ++++++++++++ doc/utilisateurs-ose.xls | Bin 16896 -> 32768 bytes ...plication.Entity.Db.VRolePersonnel.dcm.xml | 27 +++++ .../Application/Entity/Db/VRolePersonnel.php | 99 ++++++++++++++++++ .../Provider/Role/RoleProvider.php | 25 +---- .../Provider/Role/RoleProviderFactory.php | 3 +- .../src/Application/Service/Role.php | 44 ++++---- 8 files changed, 242 insertions(+), 45 deletions(-) create mode 100644 module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.VRolePersonnel.dcm.xml create mode 100644 module/Application/src/Application/Entity/Db/VRolePersonnel.php diff --git a/data/ose_schema.sql b/data/ose_schema.sql index eefdd81fb6..309ef26ecb 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 f86801ab8e..d349f905b8 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 GIT binary patch literal 32768 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 a$X*yGMh~b>MT|OP)xhiq(ZuLMwjTh1Fg+Cj literal 16896 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 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 0000000000..8298c86515 --- /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 0000000000..2614b7b828 --- /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 4667a37065..d61cfd774e 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 9b6992e2f7..323e1f232b 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 f968169051..dcf2a5df0f 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 -- GitLab