From 440ffef5def19a1325cd97615f45e33fe2b38f81 Mon Sep 17 00:00:00 2001
From: Antonin Coquet <ext.sopra.acoquet@grandlyon.com>
Date: Wed, 19 May 2021 10:51:55 +0200
Subject: [PATCH] fix: new endpoint for admin pannel, sorting and better algo

---
 src/admin/admin.controller.ts | 39 +++++++++++++++++------------------
 1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/src/admin/admin.controller.ts b/src/admin/admin.controller.ts
index 2866987d4..f35cae882 100644
--- a/src/admin/admin.controller.ts
+++ b/src/admin/admin.controller.ts
@@ -1,7 +1,7 @@
-import { Body, Delete, Param } from '@nestjs/common';
-import { Controller, Get, Post, UseGuards } from '@nestjs/common';
+import { Body, Delete, Param, Controller, Get, Post, UseGuards } from '@nestjs/common';
 import { ApiOperation, ApiParam } from '@nestjs/swagger';
 import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
+import { NewsletterSubscription } from '../newsletter/newsletter-subscription.schema';
 import { NewsletterService } from '../newsletter/newsletter.service';
 import { StructuresService } from '../structures/services/structures.service';
 import { Roles } from '../users/decorators/roles.decorator';
@@ -24,7 +24,7 @@ export class AdminController {
   @ApiOperation({ description: 'Get pending structre for validation' })
   public async getPendingAttachments(): Promise<PendingStructureDto[]> {
     const pendingStructure = await this.usersService.getPendingStructures();
-    return await Promise.all(
+    return Promise.all(
       pendingStructure.map(async (structure) => {
         structure.structureName = (await this.structuresService.findOne(structure.structureId)).structureName;
         return structure;
@@ -32,14 +32,6 @@ export class AdminController {
     );
   }
 
-  @UseGuards(JwtAuthGuard, RolesGuard)
-  @Roles('admin')
-  @Get('unclaimedStructures')
-  @ApiOperation({ description: 'Get pending structre for validation' })
-  public async getUnclaimedStructures(): Promise<UnclaimedStructureDto[]> {
-    return await this.structuresService.findAllUnclaimed();
-  }
-
   @UseGuards(JwtAuthGuard, RolesGuard)
   @Roles('admin')
   @Get('adminStructuresList')
@@ -50,11 +42,18 @@ export class AdminController {
     structuresList.toClaim = (await this.structuresService.findAllUnclaimed()).filter(
       (demand) => !structuresList.inClaim.find((elem) => elem.structureId == demand.structureId)
     );
-    structuresList.claimed = (await this.structuresService.findAll()).filter(
-      (demand) =>
-        !structuresList.inClaim.find((elem) => elem.structureId == demand.id) &&
-        !structuresList.toClaim.find((elem) => elem.structureId == demand.id)
-    );
+    structuresList.claimed = (await this.structuresService.findAll())
+      .filter(
+        (demand) =>
+          !structuresList.inClaim.find((elem) => elem.structureId == demand.id) &&
+          !structuresList.toClaim.find((elem) => elem.structureId == demand.id)
+      )
+      .map((structure) => {
+        return { structureId: structure.id, structureName: structure.structureName };
+      });
+    structuresList.claimed.sort((a, b) => a.structureName.localeCompare(b.structureName));
+    structuresList.inClaim.sort((a, b) => a.structureName.localeCompare(b.structureName));
+    structuresList.toClaim.sort((a, b) => a.structureName.localeCompare(b.structureName));
     return structuresList;
   }
 
@@ -71,7 +70,7 @@ export class AdminController {
       true
     );
     const pendingStructure = await this.usersService.getPendingStructures();
-    return await Promise.all(
+    return Promise.all(
       pendingStructure.map(async (pendingStructureData) => {
         pendingStructureData.structureName = (
           await this.structuresService.findOne(pendingStructureData.structureId)
@@ -94,7 +93,7 @@ export class AdminController {
       false
     );
     const pendingStructure = await this.usersService.getPendingStructures();
-    return await Promise.all(
+    return Promise.all(
       pendingStructure.map(async (pendingStructureData) => {
         pendingStructureData.structureName = (
           await this.structuresService.findOne(pendingStructureData.structureId)
@@ -149,7 +148,7 @@ export class AdminController {
   @Roles('admin')
   @Delete('newsletterSubscription/:email')
   @ApiParam({ name: 'email', type: String, required: true })
-  public async unsubscribeUserFromNewsletter(@Param() params) {
-    return await this.newsletterService.deleteOneEmail(params.email);
+  public async unsubscribeUserFromNewsletter(@Param() params): Promise<NewsletterSubscription> {
+    return this.newsletterService.deleteOneEmail(params.email);
   }
 }
-- 
GitLab