Mise en place du routing dans les différents modules de l'application

master
Yanaël GRETTE 4 years ago
parent 19efd9401d
commit 832b0e1df7
  1. 7
      src/app/app-routing.module.ts
  2. 18
      src/app/collaborateurs/collaborateurs.routing.module.ts
  3. 2
      src/app/collaborateurs/details-collaborateur/details-collaborateur.component.html
  4. 2
      src/app/collaborateurs/formations-collaborateur/details-evaluation/evaluation.component.html
  5. 2
      src/app/collaborateurs/formations-collaborateur/edit-evaluation/edit-evaluation.component.html
  6. 2
      src/app/collaborateurs/formations-collaborateur/formations-collaborateur.component.html
  7. 12
      src/app/demandes-delegation/demandes-delegation.routing.module.ts
  8. 2
      src/app/demandes-delegation/details-demande-delegation/demande-delegation.component.html
  9. 14
      src/app/demandes-formation/demandes-formation.routing.module.ts
  10. 2
      src/app/demandes-formation/details-demande-formation/demande-formation.component.html
  11. 2
      src/app/demandes-formation/new-demande-formation/new-demande-formation.component.html
  12. 5
      src/app/ep-saisie/ep-saisie.component.html
  13. 22
      src/app/ep-saisie/ep-saisie.routing.module.ts
  14. 1
      src/app/ep-saisie/epa-saisie/epa-saisie.component.html
  15. 1
      src/app/ep-saisie/epa-six-ans-saisie/epa-six-ans-saisie.component.html
  16. 1
      src/app/ep-saisie/eps-saisie/eps-saisie.component.html
  17. 1
      src/app/ep/ep-augmentation-salaire/ep-augmentation-salaire.component.html
  18. 1
      src/app/ep/ep-choix-date/ep-choix-date.component.html
  19. 1
      src/app/ep/ep-commentaire-assistant/ep-commentaire-assistant.component.html
  20. 15
      src/app/ep/ep-commentaire-assistant/ep-commentaire-assistant.component.ts
  21. 1
      src/app/ep/ep-commentaire-referent/ep-commentaire-referent.component.html
  22. 15
      src/app/ep/ep-commentaire-referent/ep-commentaire-referent.component.ts
  23. 3
      src/app/ep/ep-consultation/ep-consultation.component.html
  24. 0
      src/app/ep/ep-consultation/ep-signature/ep-signature.component.html
  25. 0
      src/app/ep/ep-consultation/epa-six-ans/epa-six-ans.component.html
  26. 0
      src/app/ep/ep-consultation/epa/epa.component.html
  27. 0
      src/app/ep/ep-consultation/eps/eps.component.html
  28. 1
      src/app/ep/ep-demande-delegation/ep-demande-delegation.component.html
  29. 1
      src/app/ep/ep-demandes-formation/ep-demandes-formation.component.html
  30. 1
      src/app/ep/ep-participants/ep-participants.component.html
  31. 2
      src/app/ep/ep-participants/new-participant/new-participant.component.html
  32. 1
      src/app/ep/ep-propositions-dates/ep-propositions-dates.component.html
  33. 1
      src/app/ep/ep-signature/ep-signature.component.html
  34. 0
      src/app/ep/ep-signature/ep-signature.component.ts
  35. 14
      src/app/ep/ep.module.ts
  36. 45
      src/app/ep/ep.routing.module.ts
  37. 1
      src/app/ep/epa-six-ans/epa-six-ans.component.html
  38. 0
      src/app/ep/epa-six-ans/epa-six-ans.component.ts
  39. 1
      src/app/ep/epa/epa.component.html
  40. 0
      src/app/ep/epa/epa.component.ts
  41. 1
      src/app/ep/eps/eps.component.html
  42. 0
      src/app/ep/eps/eps.component.ts
  43. 2
      src/app/formations/details-formation/formation.component.html
  44. 2
      src/app/formations/edit-formation/edit-formation.component.html
  45. 15
      src/app/formations/formations.routing.module.ts
  46. 2
      src/app/formations/new-formation/new-formation.component.html
  47. 2
      src/app/referents/details-referent/details-referent.component.html
  48. 18
      src/app/referents/referents.routing.module.ts
  49. 4
      src/app/shared/guards/keycloakguard.ts
  50. 2
      src/app/shared/nav-menu/nav-menu-assistante/nav-menu-assistante.component.html
  51. 34
      src/app/shared/utils/paths.ts

@ -2,10 +2,11 @@ import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { Routes } from '@angular/router'; import { Routes } from '@angular/router';
import { AppAuthGuard } from './app.authguard';
import { HomeComponent } from './home/'; import { HomeComponent } from './home/';
import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_collaborateurs, paths_demandes_delegation, paths_demandes_formation, import { paths_collaborateurs, paths_demandes_delegation, paths_demandes_formation,
paths_ep, paths_saisie_ep, paths_formation, paths_home, paths_referents } from '@shared/utils/paths'; paths_ep, paths_saisie_ep, paths_formation, paths_home, paths_referents } from '@shared/utils/paths';
@ -18,7 +19,7 @@ const routes: Routes = [
{ {
path: paths_home.path, path: paths_home.path,
component: HomeComponent, component: HomeComponent,
canActivate: [AppAuthGuard], canActivate: [KeycloakGuard],
pathMatch: 'full' pathMatch: 'full'
}, },
{ {
@ -54,6 +55,6 @@ const routes: Routes = [
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes)], imports: [RouterModule.forRoot(routes)],
exports: [RouterModule], exports: [RouterModule],
providers: [AppAuthGuard] providers: [KeycloakGuard]
}) })
export class AppRoutingModule {} export class AppRoutingModule {}

@ -3,14 +3,22 @@ import { Routes, RouterModule } from '@angular/router';
import { CollaborateursComponent } from "./collaborateurs.component"; import { CollaborateursComponent } from "./collaborateurs.component";
import { DetailsCollaborateurComponent } from "./details-collaborateur/details-collaborateur.component";
import { FormationsCollaboateurComponent } from "./formations-collaborateur/formations-collaborateur.component";
import { EvaluationComponent } from './formations-collaborateur/details-evaluation/evaluation.component';
import { EditEvaluationComponent } from './formations-collaborateur/edit-evaluation/edit-evaluation.component';
import { paths_collaborateurs } from '@shared/utils/paths';
import { KeycloakGuard } from '@shared/guards/keycloakguard';
const routes: Routes = [ const routes: Routes = [
{ { path:'', component: CollaborateursComponent, pathMatch: 'full', canActivate: [KeycloakGuard] },
path:'', { path:paths_collaborateurs.get, component: DetailsCollaborateurComponent, canActivate: [KeycloakGuard] },
component: CollaborateursComponent, { path:paths_collaborateurs.formations, component: FormationsCollaboateurComponent, canActivate: [KeycloakGuard] },
pathMatch: 'full' { path:paths_collaborateurs.evaluation, component: EvaluationComponent, canActivate: [KeycloakGuard] },
} { path:paths_collaborateurs.edit, component: EditEvaluationComponent, canActivate: [KeycloakGuard] }
]; ];

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1>DETAILS COLLAB</h1>

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1>FORMATIONS COLLAB</h1>

@ -3,13 +3,23 @@ import { Routes, RouterModule } from '@angular/router';
import { DemandesDelegationComponent } from "./demandes-delegation.component"; import { DemandesDelegationComponent } from "./demandes-delegation.component";
import { DemandeDelegationComponent } from "./details-demande-delegation/demande-delegation.component";
import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_demandes_delegation } from "@shared/utils/paths";
const routes: Routes = [ const routes: Routes = [
{ {
path:'', path:'',
component: DemandesDelegationComponent, component: DemandesDelegationComponent,
pathMatch: 'full' pathMatch: 'full',
canActivate: [KeycloakGuard]
},
{
path: paths_demandes_delegation.get,
component: DemandeDelegationComponent,
canActivate: [KeycloakGuard]
} }
]; ];

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1> Demande delegation </h1>

@ -3,17 +3,19 @@ import { Routes, RouterModule } from '@angular/router';
import { DemandesFormationComponent } from "./demandes-formation.component"; import { DemandesFormationComponent } from "./demandes-formation.component";
import { DemandeFormationComponent } from "./details-demande-formation/demande-formation.component";
import { NewDemandeFormationComponent } from "./new-demande-formation/new-demande-formation.component";
import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_demandes_formation } from "@shared/utils/paths";
const routes: Routes = [ const routes: Routes = [
{ { path:'', component: DemandesFormationComponent, pathMatch: 'full', canActivate: [KeycloakGuard] },
path:'', { path:paths_demandes_formation.get, component: DemandeFormationComponent, canActivate: [KeycloakGuard] },
component: DemandesFormationComponent, { path:paths_demandes_formation.new, component: NewDemandeFormationComponent, canActivate: [KeycloakGuard] }
pathMatch: 'full'
}
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
exports: [RouterModule] exports: [RouterModule]

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1> Une demande de formation </h1>

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1> Nouvelle demande de formation </h1>

@ -1,2 +1,5 @@
<app-nav-menu></app-nav-menu> <app-nav-menu></app-nav-menu>
<h1>Saisie EP </h1> <h1>Saisie EP</h1>
<h2>AU DESSUS</h2>
<router-outlet></router-outlet>
<h2>EN DESSOUS</h2>

@ -3,16 +3,32 @@ import { Routes, RouterModule } from '@angular/router';
import { EpSaisieComponent } from "./ep-saisie.component"; import { EpSaisieComponent } from "./ep-saisie.component";
import { EpsSaisieComponent } from "./eps-saisie/eps-saisie.component";
import { EpaSaisieComponent } from "./epa-saisie/epa-saisie.component";
import { EpaSixAnsSaisieComponent } from "./epa-six-ans-saisie/epa-six-ans-saisie.component";
import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_saisie_ep } from "@shared/utils/paths";
const routes: Routes = [ const routes: Routes = [
{ { path:'',
path:'',
component: EpSaisieComponent, component: EpSaisieComponent,
pathMatch: 'full' canActivate: [KeycloakGuard],
children: [
{ path:paths_saisie_ep.epa, component: EpaSaisieComponent, canActivate: [KeycloakGuard] },
{ path:paths_saisie_ep.eps, component: EpsSaisieComponent, canActivate: [KeycloakGuard] },
{ path:paths_saisie_ep.epa6ans, component: EpaSixAnsSaisieComponent, canActivate: [KeycloakGuard] }
]
} }
]; ];
/*
/saisie-ep
/saisie-ep/eps
/saisie-ep/epa
/saisie-ep/epasixans
*/
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],

@ -0,0 +1 @@
<h1>Consultation choix date</h1>

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
/**
*/
@Component({
selector: 'app-ep-commentaire-assistant',
templateUrl: './ep-commentaire-assistant.component.html'
})
export class EpCommentaireAssistantComponent implements OnInit {
constructor() {}
ngOnInit() {
}
}

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
/**
*/
@Component({
selector: 'app-ep-commentaire-referent',
templateUrl: './ep-commentaire-referent.component.html'
})
export class EpCommentaireReferentComponent implements OnInit {
constructor() {}
ngOnInit() {
}
}

@ -0,0 +1,3 @@
<app-nav-menu></app-nav-menu>
<h1>Consultation EP</h1>
<router-outlet></router-outlet>

@ -0,0 +1 @@
<h1>Consultation participants </h1>

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1>New participant </h1>

@ -0,0 +1 @@
<h1>Consultation signature </h1>

@ -16,11 +16,12 @@ import { EpPropositionsDatesComponent } from "./ep-propositions-dates/ep-proposi
import { EpParticipantsComponent } from "./ep-participants/ep-participants.component"; import { EpParticipantsComponent } from "./ep-participants/ep-participants.component";
import { NewParticipantComponent } from "./ep-participants/new-participant/new-participant.component"; import { NewParticipantComponent } from "./ep-participants/new-participant/new-participant.component";
import { EpConsultationComponent } from "./ep-consultation/ep-consultation.component"; import { EpConsultationComponent } from "./ep-consultation/ep-consultation.component";
import { EpSignatureComponent } from "./ep-consultation/ep-signature/ep-signature.component"; import { EpSignatureComponent } from "./ep-signature/ep-signature.component";
import { EpaComponent } from "./ep-consultation/epa/epa.component"; import { EpaComponent } from "./epa/epa.component";
import { EpaSixAnsComponent } from "./ep-consultation/epa-six-ans/epa-six-ans.component"; import { EpaSixAnsComponent } from "./epa-six-ans/epa-six-ans.component";
import { EpsComponent } from "./ep-consultation/eps/eps.component"; import { EpsComponent } from "./eps/eps.component";
import { EpCommentaireAssistantComponent } from "./ep-commentaire-assistant/ep-commentaire-assistant.component";
import { EpCommentaireReferentComponent } from "./ep-commentaire-referent/ep-commentaire-referent.component";
import { EpRoutingModule } from './ep.routing.module'; import { EpRoutingModule } from './ep.routing.module';
@ -29,7 +30,8 @@ import { EpRoutingModule } from './ep.routing.module';
declarations: [EpComponent, EpAugmentationSalaireComponent, EpChoixDateComponent, declarations: [EpComponent, EpAugmentationSalaireComponent, EpChoixDateComponent,
EpDemandeDelegationComponent, EpDemandesFormationComponent, EpParticipantsComponent, EpDemandeDelegationComponent, EpDemandesFormationComponent, EpParticipantsComponent,
EpPropositionsDatesComponent, NewParticipantComponent, EpConsultationComponent, EpPropositionsDatesComponent, NewParticipantComponent, EpConsultationComponent,
EpSignatureComponent, EpaComponent, EpaSixAnsComponent, EpsComponent EpSignatureComponent, EpaComponent, EpaSixAnsComponent, EpsComponent,
EpCommentaireAssistantComponent, EpCommentaireReferentComponent
], ],
exports: [EpComponent exports: [EpComponent
], ],

@ -3,14 +3,55 @@ import { Routes, RouterModule } from '@angular/router';
import { EpComponent } from "./ep.component"; import { EpComponent } from "./ep.component";
import { EpAugmentationSalaireComponent } from "./ep-augmentation-salaire/ep-augmentation-salaire.component";
import { EpChoixDateComponent } from "./ep-choix-date/ep-choix-date.component";
import { EpConsultationComponent } from './ep-consultation/ep-consultation.component';
import { EpDemandeDelegationComponent } from "./ep-demande-delegation/ep-demande-delegation.component";
import { EpDemandesFormationComponent } from "./ep-demandes-formation/ep-demandes-formation.component";
import { EpParticipantsComponent } from "./ep-participants/ep-participants.component";
import { EpPropositionsDatesComponent } from "./ep-propositions-dates/ep-propositions-dates.component";
import { EpSignatureComponent } from "./ep-signature/ep-signature.component";
import { EpaComponent } from "./epa/epa.component";
import { EpaSixAnsComponent } from "./epa-six-ans/epa-six-ans.component";
import { EpsComponent } from "./eps/eps.component";
import { EpCommentaireAssistantComponent } from "./ep-commentaire-assistant/ep-commentaire-assistant.component";
import { EpCommentaireReferentComponent } from "./ep-commentaire-referent/ep-commentaire-referent.component";
import { NewParticipantComponent } from "./ep-participants/new-participant/new-participant.component";
import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_ep } from "@shared/utils/paths";
const routes: Routes = [ const routes: Routes = [
{ {
path:'', path:'',
component: EpComponent, component: EpComponent,
pathMatch: 'full' canActivate: [KeycloakGuard]
} },
{
path:paths_ep.consultation,
component: EpConsultationComponent,
canActivate: [KeycloakGuard],
children: [
{path:paths_ep.salaire, component: EpAugmentationSalaireComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.choixdate, component: EpChoixDateComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.demandedelegation, component: EpDemandeDelegationComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.demandesformation, component: EpDemandesFormationComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.participants, component: EpParticipantsComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.propositionsdates, component: EpPropositionsDatesComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.signature, component: EpSignatureComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.epa, component: EpaComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.eps, component: EpsComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.epa6ans, component: EpaSixAnsComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.assistant, component: EpCommentaireAssistantComponent, canActivate: [KeycloakGuard]},
{path:paths_ep.referent, component: EpCommentaireReferentComponent, canActivate: [KeycloakGuard]}
]
},
{
path:paths_ep.newparticipant,
component: NewParticipantComponent,
canActivate: [KeycloakGuard]
},
]; ];

@ -0,0 +1 @@
<h1>Consultation epa 6 ans</h1>

@ -0,0 +1 @@
<h1>Consultation epa</h1>

@ -0,0 +1 @@
<h1>Consultation eps</h1>

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1> Formation </h1>

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1> Edit formation </h1>

@ -3,14 +3,19 @@ import { Routes, RouterModule } from '@angular/router';
import { FormationsComponent } from "./formations.component"; import { FormationsComponent } from "./formations.component";
import { FormationComponent } from "./details-formation/formation.component";
import { EditFormationComponent } from "./edit-formation/edit-formation.component";
import { NewFormationComponent } from "./new-formation/new-formation.component";
import { KeycloakGuard } from '@shared/guards/keycloakguard';
import { paths_formation } from "@shared/utils/paths";
const routes: Routes = [ const routes: Routes = [
{ { path:'', component: FormationsComponent, pathMatch: 'full', canActivate: [KeycloakGuard] },
path:'', { path:paths_formation.get, component: FormationComponent, canActivate: [KeycloakGuard] },
component: FormationsComponent, { path:paths_formation.edit, component: EditFormationComponent, canActivate: [KeycloakGuard] },
pathMatch: 'full' { path:paths_formation.new, component: NewFormationComponent, canActivate: [KeycloakGuard] },
}
]; ];

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1> Nouvelle formation </h1>

@ -0,0 +1,2 @@
<app-nav-menu></app-nav-menu>
<h1> referent </h1>

@ -3,16 +3,32 @@ import { Routes, RouterModule } from '@angular/router';
import { ReferentsComponent } from "./referents.component"; import { ReferentsComponent } from "./referents.component";
import { DetailsReferentComponent } from "./details-referent/details-referent.component";
import { paths_referents } from "@shared/utils/paths";
import { KeycloakGuard } from '@shared/guards/keycloakguard';
const routes: Routes = [ const routes: Routes = [
{ {
path:'', path:'',
component: ReferentsComponent, component: ReferentsComponent,
pathMatch: 'full' pathMatch: 'full',
canActivate: [KeycloakGuard]
},
{
path:paths_referents.get,
component: ReferentsComponent,
pathMatch: 'full',
canActivate: [KeycloakGuard]
} }
]; ];
/*
/referents
/referents/:id (id référent)
*/
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],

@ -4,10 +4,10 @@ import { KeycloakService, KeycloakAuthGuard } from 'keycloak-angular';
/** /**
* AppAuthGuard est la fonction qui va gérer l'authentificatione et les droits d'accès en fonction des rôles. * KeycloakGuard est la classe qui va gérer l'authentification et les droits d'accès en fonction des rôles Keycloak.
*/ */
@Injectable() @Injectable()
export class AppAuthGuard extends KeycloakAuthGuard { export class KeycloakGuard extends KeycloakAuthGuard {
constructor(protected router: Router, protected keycloakAngular: KeycloakService) { constructor(protected router: Router, protected keycloakAngular: KeycloakService) {
super(router, keycloakAngular); super(router, keycloakAngular);
} }

@ -3,7 +3,7 @@
<mat-icon>more_vert</mat-icon> <mat-icon>more_vert</mat-icon>
</button> </button>
<mat-menu #menuCollaborateurs="matMenu"> <mat-menu #menuCollaborateurs="matMenu">
<button mat-menu-item routerLink="/collaborateurs">Liste des collaborateurs</button> <button mat-menu-item routerLink="/collaborateurs" routerLinkActive>Liste des collaborateurs</button>
<button mat-menu-item routerLink="/ep">Liste des EP</button> <button mat-menu-item routerLink="/ep">Liste des EP</button>
</mat-menu> </mat-menu>
<button mat-button routerLink="/referents">Liste des référents</button> <button mat-button routerLink="/referents">Liste des référents</button>

@ -1,20 +1,23 @@
const paths_collaborateurs = { const paths_collaborateurs = {
base: "/collaborateurs", base: "/collaborateurs",
path: "collaborateurs", path: "collaborateurs",
formation: "formations", get: ":id",
evaluation: "evaluation", formations: ":id/formations",
edit: "edit" evaluation: ":id/formations/evaluation/:id",
edit: ":id/formations/evaluation/:id/edit"
}; };
const paths_demandes_delegation = { const paths_demandes_delegation = {
base: "/demandesdelegation", base: "/demandesdelegation",
path: "demandesdelegation" path: "demandesdelegation",
get: ":id"
}; };
const paths_demandes_formation = { const paths_demandes_formation = {
base: "/demandesformation", base: "/demandesformation",
path: "demandesformation", path: "demandesformation",
new: "nouvelledemande" get: ":id",
new: "nouvelledemandeformation"
}; };
const paths_ep = { const paths_ep = {
@ -24,10 +27,18 @@ const paths_ep = {
choixdate: "choixdate", choixdate: "choixdate",
demandedelegation: "demandedelegation", demandedelegation: "demandedelegation",
demandesformation: "demandesformation", demandesformation: "demandesformation",
propositiondate: "propositiondate", propositionsdates: "propositiondate",
participants: "participants", participants: "participants",
commentaireAssistante: "commentaireassistante", commentaireAssistante: "commentaireassistante",
commentaireReferent: "commentairereferent" commentaireReferent: "commentairereferent",
signature: "signature",
epa: "epa",
eps: "eps",
epa6ans: "epasixans",
assistant: "commentaireassistant",
referent: "commentairereferent",
consultation: ":id",
newparticipant: "ajoutparticipant"
}; };
const paths_saisie_ep = { const paths_saisie_ep = {
@ -41,8 +52,10 @@ const paths_saisie_ep = {
const paths_formation = { const paths_formation = {
base: "/formations", base: "/formations",
path: "formations", path: "formations",
new: "nouvelleformation", get: ":id",
evaluation: "evaluation" edit: ":id/edit",
//evaluation: ":id/evaluation/ideval",
new: "nouvelleformation"
}; };
const paths_home = { const paths_home = {
@ -53,7 +66,8 @@ const paths_home = {
const paths_referents = { const paths_referents = {
base: "/referents", base: "/referents",
path: "referents" path: "referents",
get: ":id"
}; };
export { paths_collaborateurs, paths_demandes_delegation, paths_demandes_formation, export { paths_collaborateurs, paths_demandes_delegation, paths_demandes_formation,

Loading…
Cancel
Save