diff --git a/src/app/referents/assignation-referent/assignation-referent.component.ts b/src/app/referents/assignation-referent/assignation-referent.component.ts index 4796684..2d57ad3 100644 --- a/src/app/referents/assignation-referent/assignation-referent.component.ts +++ b/src/app/referents/assignation-referent/assignation-referent.component.ts @@ -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); } diff --git a/src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.module.ts b/src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.module.ts index 8d0bf88..8ae3cf0 100644 --- a/src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.module.ts +++ b/src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.module.ts @@ -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, diff --git a/src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.ts b/src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.ts index 721022f..0c568bc 100644 --- a/src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.ts +++ b/src/app/shared/affichage-details-collaboarteur/affichage-details-collaborateur.ts @@ -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); } } \ No newline at end of file diff --git a/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-collaborateurs.html b/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-collaborateurs.html index 3e8fc5e..17b30c6 100644 --- a/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-collaborateurs.html +++ b/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-collaborateurs.html @@ -1 +1,17 @@ - \ No newline at end of file + + +

Collaborateurs sélectionnés :

+ + + {{collaborateur.nom}} {{collaborateur.prenom}} + cancel + + + +
+

Veuillez sélectionner au moins un collaborateur

+ + diff --git a/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-referent.html b/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-referent.html index 4ad2232..64c0b36 100644 --- a/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-referent.html +++ b/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide-referent.html @@ -5,4 +5,4 @@

Veuillez choisir un référent

- \ No newline at end of file + \ No newline at end of file diff --git a/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide.component.ts b/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide.component.ts index 286b2dd..27bccf8 100644 --- a/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide.component.ts +++ b/src/app/shared/affichage-details-collaboarteur/dialog-assignation-rapide/dialog-assignation-rapide.component.ts @@ -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, private referentsEPService: ReferentsEPService, + constructor(private dialogRef: MatDialogRef, private referentsEPService: ReferentsEPService, @Inject(MAT_DIALOG_DATA) private data: CollaborateurDTO) { this.referentChoisi = data.referent; } @@ -63,4 +63,106 @@ 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, 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(); + } + } } \ No newline at end of file diff --git a/src/app/shared/mat-tables/collaborateurs-table/collaborateurs.table.html b/src/app/shared/mat-tables/collaborateurs-table/collaborateurs.table.html index 85f2e08..f2543a0 100644 --- a/src/app/shared/mat-tables/collaborateurs-table/collaborateurs.table.html +++ b/src/app/shared/mat-tables/collaborateurs-table/collaborateurs.table.html @@ -65,7 +65,7 @@ Référent - {{ row.referent.prenom }} {{ row.referent.nom }} + {{ row.referent.nom }} {{ row.referent.prenom }} Aucun référent