From 197123f5698a495c1a7a34fc848a7e784ee531c2 Mon Sep 17 00:00:00 2001 From: Bastien DUMONT <bdumont@grandlyon.com> Date: Thu, 6 Apr 2023 10:41:54 +0000 Subject: [PATCH] feat(admin): restore deleted structure --- .../deleted-structures.component.html | 1 - .../deleted-structures.component.ts | 18 +++++++++++++++++ .../admin-structures-list.component.ts | 20 +++++++++---------- .../models/adminStructureList.interface.ts | 13 ++++++++++++ src/app/admin/services/admin.service.ts | 13 ++++++------ 5 files changed, 48 insertions(+), 17 deletions(-) create mode 100644 src/app/admin/models/adminStructureList.interface.ts diff --git a/src/app/admin/components/deleted-structures/deleted-structures.component.html b/src/app/admin/components/deleted-structures/deleted-structures.component.html index ef140d887..e4b520515 100644 --- a/src/app/admin/components/deleted-structures/deleted-structures.component.html +++ b/src/app/admin/components/deleted-structures/deleted-structures.component.html @@ -3,7 +3,6 @@ </div> <div *ngIf="!isLoading" class="deletedStructures"> <h2>Liste des structures supprimées</h2> - <ag-grid-angular *ngIf="deletedStructures" class="ag-theme-alpine" diff --git a/src/app/admin/components/deleted-structures/deleted-structures.component.ts b/src/app/admin/components/deleted-structures/deleted-structures.component.ts index 6b48ced90..2c3e281cf 100644 --- a/src/app/admin/components/deleted-structures/deleted-structures.component.ts +++ b/src/app/admin/components/deleted-structures/deleted-structures.component.ts @@ -18,6 +18,10 @@ export class DeletedStructuresComponent implements OnInit { constructor(private adminService: AdminService, private datePipe: DatePipe) {} ngOnInit(): void { + this.loadDeletedStructures(); + } + + private loadDeletedStructures(): void { this.adminService .getDeletedStructures() .pipe(finalize(() => (this.isLoading = false))) @@ -30,6 +34,13 @@ export class DeletedStructuresComponent implements OnInit { return `<a href="/acteurs?id=${structure._id}" target="_blank">${structure.structureName}</a>`; } + private restoreStructure(structureId: string): void { + this.adminService.restoreDeletedStructure(structureId).subscribe(() => { + this.isLoading = true; + this.loadDeletedStructures(); + }); + } + public columnDefs: ColDef<Structure>[] = [ { headerName: 'Structure', @@ -53,5 +64,12 @@ export class DeletedStructuresComponent implements OnInit { sort: 'desc', valueFormatter: (params) => this.datePipe.transform(params.value, 'yyyy-MM-dd'), }, + { + headerName: 'Restaurer', + cellRenderer: () => '<button type="button">Restaurer</button>', + onCellClicked: (params) => { + this.restoreStructure(params.data._id); + }, + }, ]; } diff --git a/src/app/admin/components/structures-list/admin-structures-list.component.ts b/src/app/admin/components/structures-list/admin-structures-list.component.ts index fe80c1047..3127ba460 100644 --- a/src/app/admin/components/structures-list/admin-structures-list.component.ts +++ b/src/app/admin/components/structures-list/admin-structures-list.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { finalize } from 'rxjs/operators'; -import { StructureAdminInfo } from '../../models/demandAttachment.model'; +import { AdminStructure } from '../../models/adminStructureList.interface'; import { AdminService } from '../../services/admin.service'; @Component({ @@ -9,10 +9,10 @@ import { AdminService } from '../../services/admin.service'; styleUrls: ['../../admin-pannel.scss'], }) export class AdminStructuresListComponent implements OnInit { - public structuresInClaim: StructureAdminInfo[]; - public structuresToClaim: StructureAdminInfo[]; - public structuresClaimed: StructureAdminInfo[]; - public structuresIncomplete: StructureAdminInfo[]; + public structuresClaimed: AdminStructure[]; + public structuresInClaim: AdminStructure[]; + public structuresToClaim: AdminStructure[]; + public structuresIncomplete: AdminStructure[]; public isAll: boolean = false; public isLoading: boolean = true; constructor(private adminService: AdminService) {} @@ -21,11 +21,11 @@ export class AdminStructuresListComponent implements OnInit { this.adminService .getAllStructureAdmin() .pipe(finalize(() => (this.isLoading = false))) - .subscribe((structures) => { - this.structuresClaimed = structures.claimed; - this.structuresInClaim = structures.inClaim; - this.structuresToClaim = structures.toClaim; - this.structuresIncomplete = structures.incomplete; + .subscribe((response) => { + this.structuresClaimed = response.claimed; + this.structuresInClaim = response.inClaim; + this.structuresToClaim = response.toClaim; + this.structuresIncomplete = response.incomplete; }); } } diff --git a/src/app/admin/models/adminStructureList.interface.ts b/src/app/admin/models/adminStructureList.interface.ts new file mode 100644 index 000000000..9a751bbb6 --- /dev/null +++ b/src/app/admin/models/adminStructureList.interface.ts @@ -0,0 +1,13 @@ +export interface AdminStructureList { + claimed: AdminStructure[]; + inClaim: AdminStructure[]; + toClaim: AdminStructure[]; + incomplete: AdminStructure[]; +} + +export interface AdminStructure { + structureId: string; + structureName: string; + updatedAt: Date; + isOutdated: boolean; +} diff --git a/src/app/admin/services/admin.service.ts b/src/app/admin/services/admin.service.ts index b7e5e720b..bd98249d5 100644 --- a/src/app/admin/services/admin.service.ts +++ b/src/app/admin/services/admin.service.ts @@ -5,6 +5,7 @@ import { Employer } from '../../models/employer.model'; import { Job } from '../../models/job.model'; import { Structure } from '../../models/structure.model'; import { User } from '../../models/user.model'; +import { AdminStructureList } from '../models/adminStructureList.interface'; import { StructureAdminInfo } from '../models/demandAttachment.model'; @Injectable({ @@ -21,12 +22,8 @@ export class AdminService { return this.http.get<StructureAdminInfo[]>(`${this.baseUrl}/pendingStructures`); } - public getToClaimStructure(): Observable<StructureAdminInfo[]> { - return this.http.get<StructureAdminInfo[]>(`${this.baseUrl}/unclaimedStructures`); - } - - public getAllStructureAdmin(): Observable<any> { - return this.http.get<StructureAdminInfo[]>(`${this.baseUrl}/adminStructuresList`); + public getAllStructureAdmin(): Observable<AdminStructureList> { + return this.http.get<AdminStructureList>(`${this.baseUrl}/adminStructuresList`); } public getUsers(): Observable<User[]> { @@ -173,4 +170,8 @@ export class AdminService { public getDeletedStructures(): Observable<Structure[]> { return this.http.get<Structure[]>(`${this.baseUrl}/getDeletedStructures`); } + + public restoreDeletedStructure(structureId: string): Observable<void> { + return this.http.post<void>(`${this.baseUrl}/restoreDeletedStructure/${structureId}`, {}); + } } -- GitLab