diff --git a/src/app/engagements/dialog-engagements.html b/src/app/engagements/dialog-engagements.html new file mode 100644 index 0000000..053d8bb --- /dev/null +++ b/src/app/engagements/dialog-engagements.html @@ -0,0 +1,30 @@ +

Détails de l'engagement

+

Collaborateur: {{collaborateur.nom}} {{collaborateur.prenom}}

+

Référent: {{referent.nom}} {{referent.prenom}}

+

EP effectué le {{ ep.datePrevisionnelle | date: 'dd/MM/yyyy' }}

+

Action : {{ data.action}}

+

Modalité: {{ data.modalite }}

+

Date limite: {{ data.dateLimite | date: 'dd/MM/yyyy' }}

+

Etat : {{ afficherEtat(data.etatEngagement) }}

+

Raison non réalisable : {{data.raisonNonRealisable}}

+ + + + + Engagement respecté + + +
+ + Raison du refus + + + +
+ +
+ +
+ + + diff --git a/src/app/engagements/engagements.component.ts b/src/app/engagements/engagements.component.ts index 7a1c655..d139521 100644 --- a/src/app/engagements/engagements.component.ts +++ b/src/app/engagements/engagements.component.ts @@ -1,5 +1,9 @@ -import { Component } from "@angular/core"; -import { EngagementDTO } from "@shared/api-swagger"; +import { Component, Inject } from "@angular/core"; +import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; +import { MatSnackBar } from "@angular/material/snack-bar"; +import { CollaborateurDTO, EngagementDTO, EngagementsService, EpInformationDTO, EtatEngagement, afficherEtatEngagement } from "@shared/api-swagger"; +import { Subscription } from "rxjs"; + @Component({ selector: "app-engagements", @@ -8,9 +12,75 @@ import { EngagementDTO } from "@shared/api-swagger"; export class EngagementsComponent { displayedColumns : string[] = ["businessunit", "collaborateur", "action", "dispositif", "modalite", "datelimite", "etat"]; - constructor() {} + constructor(private dialog: MatDialog) {} afficherDetailsEngagements(engagement: EngagementDTO) { - console.log(engagement); + const datas = { data: engagement, width: "80%", height: '80%'}; + this.dialog.open(DialogEngagementsComponent, datas); + } +} + +@Component( { + selector: "dialog-engagements", + templateUrl: "dialog-engagements.html" +}) +export class DialogEngagementsComponent { + ep: EpInformationDTO; + collaborateur: CollaborateurDTO; + referent: CollaborateurDTO; + etatEngagement: any = EtatEngagement; + engagementsSubscription: Subscription; + + donnerReponse: boolean = false; + raisonRefus : string = ""; + engagementRespecte: boolean = true; + + + constructor(private dialogRef : MatDialogRef, @Inject(MAT_DIALOG_DATA) public data : EngagementDTO, private engagementsService: EngagementsService, + private snackBar: MatSnackBar){ + this.ep = data.ep; + this.collaborateur = data.ep.collaborateur; + this.referent = data.ep.referent; + } + + mettreAJourEngagement() { + let engagement : EngagementDTO = this.data; + if(this.engagementRespecte) { + engagement.etatEngagement = EtatEngagement.Respecte; + } + else { + if(this.raisonRefus.length == 0) { + this.snackBar.open("Vous devez justifier le refus de respecter l'engagement.", "Attention", { + duration: 5000, + horizontalPosition: "center", + verticalPosition: "top", + }); + return; + } + engagement.raisonNonRealisable = this.raisonRefus; + engagement.etatEngagement = EtatEngagement.NonRealisable; + } + this.engagementsSubscription = this.engagementsService.updateEngagement(engagement, engagement.id).subscribe( + () => location.reload(), + err => console.log(err) + ); + } + + afficherEtat(etat: EtatEngagement) { + return afficherEtatEngagement(etat); + } + + fermer() { + this.dialogRef.close(); + } + + repondre() { + this.donnerReponse = true; + } + + ngOnDestroy() { + if(this.engagementsSubscription != null) { + this.engagementsSubscription.unsubscribe(); + } } } \ No newline at end of file diff --git a/src/app/engagements/engagements.module.ts b/src/app/engagements/engagements.module.ts index fb4e8b2..b06d1fc 100644 --- a/src/app/engagements/engagements.module.ts +++ b/src/app/engagements/engagements.module.ts @@ -5,15 +5,16 @@ import { RouterModule } from '@angular/router'; import { MaterialModule } from "@shared/angular-material/angular-material.module"; import {NavMenuModule} from '@shared/nav-menu/nav-menu.module'; -import { EngagementsComponent } from "./engagements.component"; +import { DialogEngagementsComponent, EngagementsComponent } from "./engagements.component"; import { EngagementsRoutingModule } from "./engagements.routing.module"; import { MatTablesModule } from "@shared/mat-tables/mat-tables.module"; +import { FormsModule } from "@angular/forms"; @NgModule({ declarations: [ - EngagementsComponent + EngagementsComponent, DialogEngagementsComponent ], exports: [], imports: [ @@ -21,7 +22,9 @@ import { MatTablesModule } from "@shared/mat-tables/mat-tables.module"; RouterModule, NavMenuModule, EngagementsRoutingModule, - MatTablesModule + MatTablesModule, + MaterialModule, + FormsModule ], }) export class EngagementsModule {} \ No newline at end of file diff --git a/src/app/shared/angular-material/angular-material.module.ts b/src/app/shared/angular-material/angular-material.module.ts index ceda0f8..195bc88 100644 --- a/src/app/shared/angular-material/angular-material.module.ts +++ b/src/app/shared/angular-material/angular-material.module.ts @@ -19,6 +19,8 @@ import {MatSelectModule} from '@angular/material/select'; import {MatStepperModule} from '@angular/material/stepper'; import {MatChipsModule} from '@angular/material/chips'; import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatSlideToggleModule} from '@angular/material/slide-toggle'; + import { NgxMatDatetimePickerModule, NgxMatTimepickerModule, NgxMatNativeDateModule } from '@angular-material-components/datetime-picker'; @@ -36,7 +38,7 @@ import { NgxMatDatetimePickerModule, NgxMatTimepickerModule, NgxMatNativeDateMod NgxMatDatetimePickerModule, MatDatepickerModule, NgxMatNativeDateModule, MatNativeDateModule, MatCheckboxModule, MatSelectModule, MatStepperModule, - MatChipsModule, MatSnackBarModule + MatChipsModule, MatSnackBarModule, MatSlideToggleModule ], exports : [MatCardModule, MatButtonModule, MatMenuModule, @@ -47,7 +49,7 @@ import { NgxMatDatetimePickerModule, NgxMatTimepickerModule, NgxMatNativeDateMod NgxMatDatetimePickerModule, MatDatepickerModule, NgxMatNativeDateModule, MatNativeDateModule, MatCheckboxModule, MatSelectModule, MatStepperModule, - MatChipsModule, MatSnackBarModule + MatChipsModule, MatSnackBarModule, MatSlideToggleModule ] }) export class MaterialModule {} diff --git a/src/app/shared/api-swagger/model/etatEngagement.ts b/src/app/shared/api-swagger/model/etatEngagement.ts index ac12563..17b2f26 100644 --- a/src/app/shared/api-swagger/model/etatEngagement.ts +++ b/src/app/shared/api-swagger/model/etatEngagement.ts @@ -20,4 +20,17 @@ export const EtatEngagement = { Respecte: 'Respecte' as EtatEngagement, NonRealisable: 'NonRealisable' as EtatEngagement, DateLimitePassee: 'DateLimitePassee' as EtatEngagement -}; \ No newline at end of file +}; + +export function afficherEtatEngagement(etatEngagement: EtatEngagement) { + switch(etatEngagement) { + case EtatEngagement.Respecte: + return "Respecté"; + case EtatEngagement.NonRealisable: + return "Non réalisable"; + case EtatEngagement.EnAttente: + return "En attente"; + case EtatEngagement.DateLimitePassee: + return "Date limite passée"; + } +} \ No newline at end of file diff --git a/src/app/shared/mat-tables/engagements-table/engagements-table.html b/src/app/shared/mat-tables/engagements-table/engagements-table.html index 38fee0a..eb9f040 100644 --- a/src/app/shared/mat-tables/engagements-table/engagements-table.html +++ b/src/app/shared/mat-tables/engagements-table/engagements-table.html @@ -47,7 +47,7 @@ Dispositif - {{row.dispotitif}} + {{row.dispositif}} @@ -57,7 +57,7 @@ Date limite - {{row.dateLimite}} + {{row.dateLimite | date :'dd/MM/yyyy'}} diff --git a/src/app/shared/mat-tables/engagements-table/engagements-table.ts b/src/app/shared/mat-tables/engagements-table/engagements-table.ts index 50e8d47..7450212 100644 --- a/src/app/shared/mat-tables/engagements-table/engagements-table.ts +++ b/src/app/shared/mat-tables/engagements-table/engagements-table.ts @@ -1,6 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; import { MatTableDataSource } from "@angular/material/table"; -import { BusinessUnitDTO, CollaborateurDTO, EngagementDTO, EngagementsService, EtatEngagement } from "@shared/api-swagger"; +import { BusinessUnitDTO, CollaborateurDTO, EngagementDTO, EngagementsService, EtatEngagement, afficherEtatEngagement } from "@shared/api-swagger"; import { cles, engagementTypeRecherche } from "@shared/utils/cles"; import { EngagementsRoutingModule } from "app/engagements/engagements.routing.module"; import { Subscription } from "rxjs"; @@ -122,16 +122,7 @@ export class EngagementTableComponent implements OnInit { } afficherEtat(etat: EtatEngagement) { - switch(etat) { - case EtatEngagement.Respecte: - return "Respecté"; - case EtatEngagement.NonRealisable: - return "Non réalisable"; - case EtatEngagement.EnAttente: - return "En attente"; - case EtatEngagement.DateLimitePassee: - return "Date limite passée"; - } + return afficherEtatEngagement(etat); } /**