diff --git a/src/app/services/structure.service.ts b/src/app/services/structure.service.ts index f767540dcf7e19398809830daf1d5955ebeeb11e..97caee520996d96e60eac4b9bc35d9eb2c3a9ac6 100644 --- a/src/app/services/structure.service.ts +++ b/src/app/services/structure.service.ts @@ -40,8 +40,13 @@ export class StructureService { } public getStructure(id: string): Observable<Structure> { - return this.http.get(`${this.baseUrl}/${id}`).pipe(map((item: any) => new Structure(item))); + return this.http.get<Structure>(`${this.baseUrl}/${id}`); } + + public delete(id: string): Observable<Structure> { + return this.http.delete<Structure>(`${this.baseUrl}/${id}`); + } + public getStructures(filters: Filter[]): Observable<Structure[]> { if (filters && filters.length > 0) { let requestUrl = `${this.baseUrl}/search`; diff --git a/src/app/structure-list/components/structure-details/structure-details.component.html b/src/app/structure-list/components/structure-details/structure-details.component.html index 0d2659880097ca8719e2c596d41b26ef84d33bac..4a5fabdf3f32be9b0555401c2022677de7475081 100644 --- a/src/app/structure-list/components/structure-details/structure-details.component.html +++ b/src/app/structure-list/components/structure-details/structure-details.component.html @@ -9,7 +9,7 @@ <div class="structrue-details-container" *ngIf="structure && !isLoading"> <!-- Header info --> <div fxLayout="row" fxLayoutAlign="end center"> - <div (click)="close()" class="ico-close-details"></div> + <div (click)="close(false)" class="ico-close-details"></div> </div> <div fxLayout="row" class="structure-details-block" fxLayoutAlign="baseline baseline" fxLayoutGap="8px"> <div fxLayout="column" fxLayoutGap="10px" fxFlex="100%"> @@ -92,6 +92,9 @@ > Modifier cette structure </a> + <a *ngIf="profileService.isAdmin()" (click)="deleteStructure()" class="primary" tabindex="0"> + Supprimer cette structure + </a> </div> <div> {{ structure.description }} diff --git a/src/app/structure-list/components/structure-details/structure-details.component.ts b/src/app/structure-list/components/structure-details/structure-details.component.ts index 747ca0402f88d59d7bf864b1f150f2c39b04572c..e714b327bd631a425599019e79a813c56745a539 100644 --- a/src/app/structure-list/components/structure-details/structure-details.component.ts +++ b/src/app/structure-list/components/structure-details/structure-details.component.ts @@ -5,7 +5,7 @@ import { Category } from '../../models/category.model'; import { AccessModality } from '../../enum/access-modality.enum'; import { SearchService } from '../../services/search.service'; import * as _ from 'lodash'; -import { ActivatedRoute } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; import { PrintService } from '../../../shared/service/print.service'; import { Equipment } from '../../enum/equipment.enum'; import { typeStructureEnum } from '../../../shared/enum/typeStructure.enum'; @@ -41,13 +41,14 @@ export class StructureDetailsComponent implements OnInit { public currentProfile: User = null; constructor( - route: ActivatedRoute, private printService: PrintService, private searchService: SearchService, private structureService: StructureService, private tclService: TclService, private profileService: ProfileService, - private authService: AuthService + private authService: AuthService, + private route: ActivatedRoute, + private router: Router ) { route.url.subscribe((url) => { if (url[0].path === 'structure') { @@ -103,8 +104,8 @@ export class StructureDetailsComponent implements OnInit { } } - public close(): void { - this.closeDetails.emit(true); + public close(refreshRequired: boolean): void { + this.closeDetails.emit(refreshRequired); } public print(): void { @@ -116,6 +117,18 @@ export class StructureDetailsComponent implements OnInit { this.displayForm(); } + public deleteStructure(): void { + this.structureService.delete(this.structure._id).subscribe((res) => { + this.reload(); + }); + } + + private reload(): void { + this.router.routeReuseStrategy.shouldReuseRoute = () => false; + this.router.onSameUrlNavigation = 'reload'; + this.router.navigate(['./'], { relativeTo: this.route }); + } + public claimStructure(): void { this.isEditMode = false; this.displayForm();