diff --git a/src/app/collaborateurs/collaborateurs.component.html b/src/app/collaborateurs/collaborateurs.component.html index 4f89688..7443557 100644 --- a/src/app/collaborateurs/collaborateurs.component.html +++ b/src/app/collaborateurs/collaborateurs.component.html @@ -1,2 +1,32 @@

Liste des collaborateurs

+ + + + Agence + {{ row.agence}} + + + + Collabotareur + {{row.prenom}} {{row.nom}} + + + + Date embauche + TODO AUSSI + + + + Commercial + TODO + + + + Référent + TODO + + + + + diff --git a/src/app/collaborateurs/collaborateurs.component.ts b/src/app/collaborateurs/collaborateurs.component.ts index 16c952e..b6cd23a 100644 --- a/src/app/collaborateurs/collaborateurs.component.ts +++ b/src/app/collaborateurs/collaborateurs.component.ts @@ -1,4 +1,15 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, OnDestroy, ViewChild, ViewChildren } from '@angular/core'; + +import { Observable, Subscription } from 'rxjs'; + +import {MatTableDataSource} from '@angular/material/table'; +import {MatPaginator} from '@angular/material/paginator'; +import {MatSort} from '@angular/material/sort'; + +import { DefaultService } from "@shared/api-swagger/api/api"; + +import { CollaborateurModel } from "@shared/api-swagger/model/collaborateurModel"; +import { DisplayCollaborateur } from "@shared/displayInfo/displayCollaborateur"; /** * Composant qui sert à l'affichage de la liste des collaborateurs en fonction de l'agence de son utilitateur. @@ -11,8 +22,76 @@ import { Component, OnInit } from '@angular/core'; }) export class CollaborateursComponent implements OnInit { - constructor() {} + collaborateursDisponibles : DisplayCollaborateur[]; + collaborateursFiltre : DisplayCollaborateur[]; + private collaborateursDisponiblesSubscription : Subscription; + + displayedColumns : string[] = ["agence", "collaborateur", "dateembauche", "commercial", "referent"]; + + dataSource : MatTableDataSource; + + /** + * contenu de la recherche. + */ + search = ""; + + /** + * Pagination du tableau. + */ + @ViewChild(MatPaginator) paginator: MatPaginator; + + /** + * Tri par les éléments du tableau selon la colonne choisie. + */ + @ViewChild(MatSort) sort: MatSort; + + /** + * Spécifie si la liste des EP est en cours de chargement et d'écriture dans le tableau. + */ + chargement = true; + constructor(private service: DefaultService) {} ngOnInit() { + this. collaborateursDisponiblesSubscription = this.service.collaborateursBuIdBuGet("ui").subscribe( + collaborateurs => { + console.log(collaborateurs); + this.initCollaborateur(collaborateurs); + } + ); + } + + initCollaborateur(collaborateurs:CollaborateurModel[]) { + this.collaborateursDisponibles = []; + let collaborateurDisplay : DisplayCollaborateur; + let today = new Date(); + console.log(collaborateurs); + for(let c of collaborateurs) { + console.log(c); + collaborateurDisplay = new DisplayCollaborateur(); + collaborateurDisplay.id = c.idCollaborateur; + collaborateurDisplay.prenom = c.prenom; + collaborateurDisplay.nom = c.nom; + collaborateurDisplay.agence = c.businessunit.nom; + collaborateurDisplay.embauche = c.dateEmbauche; + collaborateurDisplay.anciennete = this.setAnciennete(new Date(c.dateEmbauche), today); + collaborateurDisplay.annee = Math.floor(collaborateurDisplay.anciennete / 31536000000); + collaborateurDisplay.mois = Math.floor(collaborateurDisplay.anciennete / 2629800000 % 12); + this.collaborateursDisponibles.push(collaborateurDisplay); + } + this.collaborateursFiltre = this.collaborateursDisponibles; + this.dataSource = new MatTableDataSource(this.collaborateursFiltre); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + } + + + setAnciennete(firstDate, secondDate) { + return Math.abs(firstDate-secondDate); + } + + ngOnDestroy() { + if(this.collaborateursDisponiblesSubscription != null) { + this.collaborateursDisponiblesSubscription.unsubscribe(); + } } } diff --git a/src/app/collaborateurs/details-collaborateur/details-collaborateur.component.html b/src/app/collaborateurs/details-collaborateur/details-collaborateur.component.html index 10f158c..2286e0f 100644 --- a/src/app/collaborateurs/details-collaborateur/details-collaborateur.component.html +++ b/src/app/collaborateurs/details-collaborateur/details-collaborateur.component.html @@ -1,2 +1,42 @@ -

DETAILS COLLAB

+ +

{{ collaborateur.prenom }} {{ collaborateur.nom }}

+ +

Agence : {{ collaborateur.businessunit.nom}}

+

Date embauche : {{ collaborateur.dateEmbauche}}

+
+ + + + + +

Aucun EP effectué encore

+
+ + +

Liste des précédents EP

+ + + Date entretient + {{ row.dateentretien}} + + + + Référent + {{ row.referent.prenom }} {{ row.referent.nom }} + + + + Type + {{ row.type}} + + + + + Voir détails EP + + + + + +
diff --git a/src/app/collaborateurs/details-collaborateur/details-collaborateur.component.ts b/src/app/collaborateurs/details-collaborateur/details-collaborateur.component.ts index 3d27c0c..829e6d4 100644 --- a/src/app/collaborateurs/details-collaborateur/details-collaborateur.component.ts +++ b/src/app/collaborateurs/details-collaborateur/details-collaborateur.component.ts @@ -1,5 +1,17 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core'; +import { Observable, Subscription } from 'rxjs'; +import {ActivatedRoute} from '@angular/router'; + +import {MatTableDataSource} from '@angular/material/table'; +import {MatPaginator} from '@angular/material/paginator'; +import {MatSort} from '@angular/material/sort'; + +import { DefaultService } from "@shared/api-swagger/api/api"; + +import { CollaborateurModel } from "@shared/api-swagger/model/collaborateurModel"; +import { EpModel } from "@shared/api-swagger/model/epModel"; +import { DisplayEP } from "@shared/displayInfo/displayEP"; /** */ @@ -8,9 +20,67 @@ import { Component, OnInit } from '@angular/core'; templateUrl: './details-collaborateur.component.html' }) export class DetailsCollaborateurComponent implements OnInit { +//epCollaborateurIdCollaborateurGet + collaborateur: CollaborateurModel; + private collaborateurSubscription : Subscription; + private epSubscription : Subscription; + epEffectues : DisplayEP[]; + displayedColumns: string[] = ["dateentretien", "referent", "type", "details"]; + dataSource : MatTableDataSource; + eploaded = false; + idCollaborateur: any; + + /** + * Pagination du tableau. + */ + @ViewChild(MatPaginator) paginator: MatPaginator; + + /** + * Tri par les éléments du tableau selon la colonne choisie. + */ + @ViewChild(MatSort) sort: MatSort; - constructor() {} + constructor(private service:DefaultService, private route: ActivatedRoute) {} ngOnInit() { + this.idCollaborateur = this.route.snapshot.paramMap.get('id'); + this.collaborateurSubscription = this.service.collaborateursIdCollaborateurGet(this.idCollaborateur).subscribe( + collaborateur => this.initCollaborateur(collaborateur[0]), + err => console.log(err) + ); + } + + initCollaborateur(collaborateur:CollaborateurModel) { + this.collaborateur = collaborateur; + this.epSubscription = this.service.epCollaborateurIdCollaborateurGet(this.idCollaborateur).subscribe( + ep => this.initEP(ep) + ) + } + + initEP(ep:EpModel[]) { + this.epEffectues = []; + let epDisplay : DisplayEP; + for(let un_ep of ep) { + epDisplay = new DisplayEP(); + epDisplay.id = un_ep.idEp; + epDisplay.referent = un_ep.referent; + epDisplay.etat = un_ep.etat; + epDisplay.type = un_ep.typeEP; + epDisplay.dateentretien = un_ep.dateEntretien; + this.epEffectues.push(epDisplay); + } + this.dataSource = new MatTableDataSource(this.epEffectues); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + this.eploaded = true; + } + + ngOnDestroy() { + if(this.epSubscription!= null) { + this.epSubscription.unsubscribe(); + } + if(this.collaborateurSubscription!= null) { + this.collaborateurSubscription.unsubscribe(); + } } } diff --git a/src/app/home/home-assistante/home-assistante.component.html b/src/app/home/home-assistante/home-assistante.component.html index 66ddc96..110bf1f 100644 --- a/src/app/home/home-assistante/home-assistante.component.html +++ b/src/app/home/home-assistante/home-assistante.component.html @@ -21,19 +21,17 @@ Collaborateur - {{row.collaborateur.nom}} {{row.collaborateur.prenom}} + {{row.collaborateur.nom}} {{row.collaborateur.prenom}} Ancienneté - {{row.annee | number: '2.0-0'}} an(s) {{row.mois | number: '2.0-0'}} mois - - + {{row.collaborateur.dateEmbauche | date: 'yyyy/MM/dd'}} ({{row.annee}}an(s) {{row.mois | number: '2.0-0'}}mois) Referent - {{row.referent.nom}} {{row.referent.prenom}} + {{row.referent.nom}} {{row.referent.prenom}} diff --git a/src/app/home/home-assistante/home-assistante.component.ts b/src/app/home/home-assistante/home-assistante.component.ts index 6a241c2..b005cf8 100644 --- a/src/app/home/home-assistante/home-assistante.component.ts +++ b/src/app/home/home-assistante/home-assistante.component.ts @@ -9,7 +9,7 @@ import {MatSort} from '@angular/material/sort'; import { CollaborateurModel } from "@shared/api-swagger/model/collaborateurModel"; import { EpModel } from "@shared/api-swagger/model/epModel"; -import { DisplayProchainEPCollaborateur } from "@shared/displayInfo/displayEP"; +import { DisplayEP } from "@shared/displayInfo/displayEP"; import { DefaultService } from "@shared/api-swagger/api/api"; @@ -30,12 +30,12 @@ export class HomeAssistanteComponent implements OnInit, AfterViewInit { /** * Une liste qui contiendra la liste des EP avec les informations à faire conserver. */ - epDisponibles : DisplayProchainEPCollaborateur[]; + epDisponibles : DisplayEP[]; /** * Liste des EP qui seront affichées en fonction des filtres. */ - epFiltre : DisplayProchainEPCollaborateur[]; + epFiltre : DisplayEP[]; /** * Subscription pour récupérer les EP. @@ -51,7 +51,7 @@ export class HomeAssistanteComponent implements OnInit, AfterViewInit { /** * source pour l'affichage des EP dans le tableau qui est affichée. */ - dataSource : MatTableDataSource; + dataSource : MatTableDataSource; /** * contenu de la recherche. @@ -85,10 +85,12 @@ export class HomeAssistanteComponent implements OnInit, AfterViewInit { */ initDisplay(eps: EpModel[]) { this.epDisponibles = [] - let epDisplay : DisplayProchainEPCollaborateur; + let epDisplay : DisplayEP; let today = new Date(); + console.log(eps); for(let ep of eps) { - epDisplay = new DisplayProchainEPCollaborateur(); + console.log(ep); + epDisplay = new DisplayEP(); epDisplay.id = ep.idEp; epDisplay.agence = ep.collaborateur.businessunit.nom; epDisplay.collaborateur = ep.collaborateur; diff --git a/src/app/shared/angular-material/angular-material.module.ts b/src/app/shared/angular-material/angular-material.module.ts index 18e7319..76fa9e8 100644 --- a/src/app/shared/angular-material/angular-material.module.ts +++ b/src/app/shared/angular-material/angular-material.module.ts @@ -9,6 +9,7 @@ import {MatMenuModule} from '@angular/material/menu'; import {MatPaginatorModule} from '@angular/material/paginator'; import {MatTableModule} from '@angular/material/table'; import {MatSortModule} from '@angular/material/sort'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; /** @@ -17,15 +18,15 @@ import {MatSortModule} from '@angular/material/sort'; @NgModule({ imports : [MatCardModule, MatButtonModule, MatMenuModule, - MatIconModule,MatPaginatorModule, + MatIconModule, MatPaginatorModule, MatSortModule, MatTableModule, - MatInputModule + MatInputModule, MatProgressSpinnerModule ], exports : [MatCardModule, MatButtonModule, MatMenuModule, - MatIconModule,MatPaginatorModule, + MatIconModule, MatPaginatorModule, MatSortModule, MatTableModule, - MatInputModule + MatInputModule, MatProgressSpinnerModule ] }) export class MaterialModule {} diff --git a/src/app/shared/api-swagger/api/default.service.ts b/src/app/shared/api-swagger/api/default.service.ts index 55d302c..13ed7cf 100644 --- a/src/app/shared/api-swagger/api/default.service.ts +++ b/src/app/shared/api-swagger/api/default.service.ts @@ -115,10 +115,10 @@ export class DefaultService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public collaborateursIdCollaborateurGet(idCollaborateur: number, observe?: 'body', reportProgress?: boolean): Observable; - public collaborateursIdCollaborateurGet(idCollaborateur: number, observe?: 'response', reportProgress?: boolean): Observable>; - public collaborateursIdCollaborateurGet(idCollaborateur: number, observe?: 'events', reportProgress?: boolean): Observable>; - public collaborateursIdCollaborateurGet(idCollaborateur: number, observe: any = 'body', reportProgress: boolean = false ): Observable { + public collaborateursIdCollaborateurGet(idCollaborateur: string, observe?: 'body', reportProgress?: boolean): Observable; + public collaborateursIdCollaborateurGet(idCollaborateur: string, observe?: 'response', reportProgress?: boolean): Observable>; + public collaborateursIdCollaborateurGet(idCollaborateur: string, observe?: 'events', reportProgress?: boolean): Observable>; + public collaborateursIdCollaborateurGet(idCollaborateur: string, observe: any = 'body', reportProgress: boolean = false ): Observable { if (idCollaborateur === null || idCollaborateur === undefined) { throw new Error('Required parameter idCollaborateur was null or undefined when calling collaborateursIdCollaborateurGet.'); @@ -367,10 +367,10 @@ export class DefaultService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public epCollaborateurIdCollaborateurGet(idCollaborateur: number, observe?: 'body', reportProgress?: boolean): Observable>; - public epCollaborateurIdCollaborateurGet(idCollaborateur: number, observe?: 'response', reportProgress?: boolean): Observable>>; - public epCollaborateurIdCollaborateurGet(idCollaborateur: number, observe?: 'events', reportProgress?: boolean): Observable>>; - public epCollaborateurIdCollaborateurGet(idCollaborateur: number, observe: any = 'body', reportProgress: boolean = false ): Observable { + public epCollaborateurIdCollaborateurGet(idCollaborateur: string, observe?: 'body', reportProgress?: boolean): Observable>; + public epCollaborateurIdCollaborateurGet(idCollaborateur: string, observe?: 'response', reportProgress?: boolean): Observable>>; + public epCollaborateurIdCollaborateurGet(idCollaborateur: string, observe?: 'events', reportProgress?: boolean): Observable>>; + public epCollaborateurIdCollaborateurGet(idCollaborateur: string, observe: any = 'body', reportProgress: boolean = false ): Observable { if (idCollaborateur === null || idCollaborateur === undefined) { throw new Error('Required parameter idCollaborateur was null or undefined when calling epCollaborateurIdCollaborateurGet.'); diff --git a/src/app/shared/displayInfo/displayCollaborateur.ts b/src/app/shared/displayInfo/displayCollaborateur.ts new file mode 100644 index 0000000..e7fc6fa --- /dev/null +++ b/src/app/shared/displayInfo/displayCollaborateur.ts @@ -0,0 +1,10 @@ +export class DisplayCollaborateur { + id: string; + agence: string; + nom: string; + prenom: string; + embauche : Date; + anciennete : number; + annee: number; + mois: number; +} diff --git a/src/app/shared/displayInfo/displayEP.ts b/src/app/shared/displayInfo/displayEP.ts index 529907b..ca12880 100644 --- a/src/app/shared/displayInfo/displayEP.ts +++ b/src/app/shared/displayInfo/displayEP.ts @@ -4,7 +4,7 @@ import {CollaborateurModel} from "../api-swagger/model/collaborateurModel"; -export class DisplayProchainEPCollaborateur { +export class DisplayEP { id : number; agence : string; collaborateur : CollaborateurModel;