Ajout de la possibilité de mettre à jour les collaborateurs EP d'un référent depuis ses détails

develop
Yanaël GRETTE 4 years ago
parent 954f1613ef
commit 053a0419e1
  1. 4
      src/app/referents/assignation-referent/assignation-referent.component.ts
  2. 5
      src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.module.ts
  3. 17
      src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.ts
  4. 16
      src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-collaborateurs.html
  5. 2
      src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-referent.html
  6. 110
      src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide.component.ts
  7. 2
      src/app/shared/mat-tables/collaborateurs-table/collaborateurs.table.html

@ -87,10 +87,6 @@ export class AssignationReferentComponent {
this.collaborateursSelectionnes.push(event.collaborateur);
}
peutAjouterCollaborateur(event) : boolean {
return event.type == "collaborateur" && !this.collaborateursSelectionnes.some(event.collaborateur) && !this.collaborateursEP.includes(event.collaborateur);
}
contientCollaborateur(listes: CollaborateurDTO[], collaborateur: CollaborateurDTO ) : boolean {
return listes.some(c => c.id == collaborateur.id);
}

@ -5,12 +5,13 @@ import { FormsModule } from '@angular/forms';
import { MaterialModule } from "../angular-material/angular-material.module";
import { AffichageDetailsCollaborateurComponent } from "@shared/affichage-details-collaboarteur/affichage-details-collaborateur";
import { MatTablesModule } from '@shared/mat-tables/mat-tables.module';
import { DialogAssignationRapideReferentComponent } from "./dialog-assignation-rapide/dialog-assignation-rapide.component";
import { DialogAssignationRapideReferentComponent, DialogAssignationRapideCollaborateursComponent } from "./dialog-assignation-rapide/dialog-assignation-rapide.component";
@NgModule({
declarations: [
AffichageDetailsCollaborateurComponent, DialogAssignationRapideReferentComponent
AffichageDetailsCollaborateurComponent, DialogAssignationRapideReferentComponent,
DialogAssignationRapideCollaborateursComponent
],
imports: [
MaterialModule,

@ -3,7 +3,7 @@ import { CollaborateurDTO, CollaborateursService } from "@shared/api-swagger";
import { Subscription } from "rxjs";
import { collaborateurTypeRecherche } from "@shared/utils/cles";
import { MatDialog } from "@angular/material/dialog";
import { DialogAssignationRapideReferentComponent } from "./dialog-assignation-rapide/dialog-assignation-rapide.component";
import { DialogAssignationRapideReferentComponent, DialogAssignationRapideCollaborateursComponent } from "./dialog-assignation-rapide/dialog-assignation-rapide.component";
@Component({
@ -41,11 +41,14 @@ export class AffichageDetailsCollaborateurComponent implements OnInit{
}
openDialog() {
let datas = { data: this.collaborateur, width: "80%", height: '80%'};
let dialog = DialogAssignationRapideReferentComponent;
if(this.estReferent)
console.log("ui");
else
this.dialog.open( dialog, datas );
const datas = { data: this.collaborateur, width: "80%", height: '80%'};
let dialog;
if(this.estReferent) {
dialog = DialogAssignationRapideCollaborateursComponent;
}
else {
dialog = DialogAssignationRapideReferentComponent;
}
this.dialog.open(dialog, datas);
}
}

@ -1 +1,17 @@
<!--ASSIGNATION D'UN OU PLUSIEURS COLLABORATEURS A UN REFERENT-->
<ng-container *ngIf="collaborateursSelectionnes.length != 0">
<p> Collaborateurs sélectionnés :</p>
<mat-chip-list >
<mat-chip
*ngFor="let collaborateur of collaborateursSelectionnes"
[removable]="true"
(removed)="enleverCollaborateur(collaborateur)">
{{collaborateur.nom}} {{collaborateur.prenom}}
<mat-icon matChipRemove>cancel</mat-icon>
</mat-chip>
</mat-chip-list>
<button mat-raised-button color="primary" (click)="mettreAJourReferentEP()">Mettre à jour le référent des collaborateurs</button>
</ng-container>
<p *ngIf="collaborateursSelectionnes.length == 0">Veuillez sélectionner au moins un collaborateur</p>
<button mat-raised-button color="primary" (click)="annuler()">Annuler</button>
<collaborateurs-table [rechercherParBU]="rechercherParBU" [rechercherParDate]="rechercherParDate" [roles]="roles" [displayedColumns]="displayedColumns" [typeRecherche]="typeRecherche" (eventEmitter)="ajoutCollaborateur($event)" [collaborateursEP]="collaborateursEP" [collaborateursAjouts]="collaborateursSelectionnes" ></collaborateurs-table>

@ -5,4 +5,4 @@
</ng-container>
<p *ngIf="referentChoisi == undefined"> Veuillez choisir un référent </p>
<button mat-raised-button color="primary" (click)="annuler()">Annuler</button>
<collaborateurs-table [rechercherParBU]="rechercherParBU" [roles]="roles" [displayedColumns]="displayedColumns" [typeRecherche]="typeRecherche" (eventEmitter)="selectionnerReferent($event)"></collaborateurs-table>
<collaborateurs-table [rechercherParBU]="rechercherParBU" [rechercherParDate]="rechercherParDate" [roles]="roles" [displayedColumns]="displayedColumns" [typeRecherche]="typeRecherche" (eventEmitter)="selectionnerReferent($event)"></collaborateurs-table>

@ -1,8 +1,8 @@
import {Component, Inject } from "@angular/core";
import {Component, Inject, OnInit } from "@angular/core";
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
import { CollaborateurDTO, ReferentEPDTO, ReferentsEPService } from "@shared/api-swagger";
import { MatSnackBar } from "@angular/material/snack-bar";
import { CollaborateurDTO, CollaborateursService, ReferentEPDTO, ReferentsEPService } from "@shared/api-swagger";
import { collaborateurTypeRecherche, } from "@shared/utils/cles";
import { DialogAssignationReferentComponent } from "app/referents/assignation-referent/assignation-referent.component";
import { Subscription } from "rxjs";
@Component({
@ -26,7 +26,7 @@ export class DialogAssignationRapideReferentComponent {
private referentEPSubscription: Subscription;
constructor(private dialogRef: MatDialogRef<DialogAssignationReferentComponent>, private referentsEPService: ReferentsEPService,
constructor(private dialogRef: MatDialogRef<DialogAssignationRapideReferentComponent>, private referentsEPService: ReferentsEPService,
@Inject(MAT_DIALOG_DATA) private data: CollaborateurDTO) {
this.referentChoisi = data.referent;
}
@ -64,3 +64,105 @@ export class DialogAssignationRapideReferentComponent {
}
@Component({
selector: "dialog-assignation-rapide-collaborateurs",
templateUrl: "dialog-assignation-rapide-collaborateurs.html"
})
export class DialogAssignationRapideCollaborateursComponent implements OnInit{
rechercherParDate: boolean = false;
rechercherParBU: boolean = true;
roles : string[] = ["Collaborateur"];
typeRecherche: string = collaborateurTypeRecherche.collaborateurs;
displayedColumns : string[] = ["businessunit", "collaborateur", "datearrivee", "referent"];
collaborateursEP: CollaborateurDTO[] = [];
collaborateursSelectionnes: CollaborateurDTO[] = [];
private collaborateurSubscription: Subscription;
private referentEPSubscription: Subscription;
constructor(private dialogRef: MatDialogRef<DialogAssignationRapideCollaborateursComponent>, private referentsEPService: ReferentsEPService,
private collaborateurService: CollaborateursService, @Inject(MAT_DIALOG_DATA) private data: CollaborateurDTO,
private snackBar: MatSnackBar) {
}
ngOnInit() {
this.collaborateurSubscription = this.collaborateurService.getCollaborateursByReferent(this.data.id).subscribe(
collaborateurs => this.collaborateursEP = collaborateurs,
err => console.log(err)
);
}
ajoutCollaborateur(event:any) {
if(event.type != "collaborateur")
return;
if(event.collaborateur.id == this.data.id) {
this.openSnackBar("Un collaborateur ne peut pas être son propre référent");
return;
}
if(this.contientCollaborateur(this.collaborateursSelectionnes, event.collaborateur)){
this.enleverCollaborateur(event.collaborateur);
return;
}
if(this.contientCollaborateur(this.collaborateursEP, event.collaborateur)){
this.openSnackBar("Le référent choisi est déjà le référent EP du collaborateur sélectionné")
return;
}
this.collaborateursSelectionnes.push(event.collaborateur);
}
contientCollaborateur(listes: CollaborateurDTO[], collaborateur: CollaborateurDTO ) : boolean {
return listes.some(c => c.id == collaborateur.id);
}
enleverCollaborateur(collaborateur: CollaborateurDTO) {
this.collaborateursSelectionnes = this.collaborateursSelectionnes.filter(c => c.id != collaborateur.id);
}
ajouterCollaborateur(event) {
if(event.type == "collaborateur") {
}
}
mettreAJourReferentEP() {
const referentEP : ReferentEPDTO = {
idReferent: this.data.id,
idsCollaborateur: this.collaborateursSelectionnes.map( c => c.id)
};
this.referentEPSubscription = this.referentsEPService.updateCollaborateursReferent(referentEP, this.data.id).subscribe(
() => location.reload(),
err => console.log(err)
);
}
openSnackBar(message: string) {
this.snackBar.open(message,"", {
duration: 5000,
horizontalPosition: "center",
verticalPosition: "top",
});
}
annuler() {
this.dialogRef.close();
}
onDestroy() {
if(this.referentEPSubscription != undefined) {
this.referentEPSubscription.unsubscribe();
}
if(this.collaborateurSubscription != undefined) {
this.collaborateurSubscription.unsubscribe();
}
}
}

@ -65,7 +65,7 @@
<ng-container matColumnDef="referent">
<mat-header-cell *matHeaderCellDef >Référent</mat-header-cell>
<mat-cell *matCellDef="let row" >
<mat-cell *ngIf="row.referent" (click)="emitEvent(row.referent,'referent')">{{ row.referent.prenom }} {{ row.referent.nom }}</mat-cell>
<mat-cell *ngIf="row.referent" (click)="emitEvent(row.referent,'referent')"> {{ row.referent.nom }} {{ row.referent.prenom }} </mat-cell>
<mat-cell *ngIf="!row.referent">Aucun référent</mat-cell>
</mat-cell>
</ng-container>

Loading…
Cancel
Save