From 8dd5f5020cce91c1d8933b906aa4b13921240f8e Mon Sep 17 00:00:00 2001 From: Antonin Coquet <ext.sopra.acoquet@grandlyon.com> Date: Mon, 17 May 2021 15:06:21 +0200 Subject: [PATCH] feat: add endpoint for unclaimed structure --- src/admin/admin.controller.ts | 11 ++++++++++- src/admin/dto/unclaimed-structure-dto.ts | 14 ++++++++++++++ src/structures/services/structures.service.ts | 14 ++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/admin/dto/unclaimed-structure-dto.ts diff --git a/src/admin/admin.controller.ts b/src/admin/admin.controller.ts index 999c6d949..4cc434314 100644 --- a/src/admin/admin.controller.ts +++ b/src/admin/admin.controller.ts @@ -2,13 +2,13 @@ import { Body, Delete, Param } from '@nestjs/common'; import { Controller, Get, Post, UseGuards } from '@nestjs/common'; import { ApiOperation, ApiParam } from '@nestjs/swagger'; import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard'; -import { NewsletterSubscriptionDocument } 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'; import { RolesGuard } from '../users/guards/roles.guard'; import { UsersService } from '../users/users.service'; import { PendingStructureDto } from './dto/pending-structure.dto'; +import { UnclaimedStructureDto } from './dto/unclaimed-structure-dto'; @Controller('admin') export class AdminController { @@ -32,6 +32,15 @@ export class AdminController { ); } + @UseGuards(JwtAuthGuard, RolesGuard) + @Roles('admin') + @Get('unclaimedStructures') + @ApiOperation({ description: 'Get pending structre for validation' }) + public async getUnclaimedStructures(): Promise<UnclaimedStructureDto[]> { + const unclaimedStructures = await this.structuresService.findAllUnclaimed(); + return unclaimedStructures; + } + @UseGuards(JwtAuthGuard, RolesGuard) @Roles('admin') @Post('validatePendingStructure') diff --git a/src/admin/dto/unclaimed-structure-dto.ts b/src/admin/dto/unclaimed-structure-dto.ts new file mode 100644 index 000000000..c57eedbd3 --- /dev/null +++ b/src/admin/dto/unclaimed-structure-dto.ts @@ -0,0 +1,14 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsString } from 'class-validator'; + +export class UnclaimedStructureDto { + @IsNotEmpty() + @IsString() + @ApiProperty({ type: String }) + readonly structureId: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ type: String }) + structureName: string; +} diff --git a/src/structures/services/structures.service.ts b/src/structures/services/structures.service.ts index 8e582acc9..6b70fb759 100644 --- a/src/structures/services/structures.service.ts +++ b/src/structures/services/structures.service.ts @@ -20,6 +20,7 @@ import { CategoriesModule } from '../../categories/categories.module'; import { CategoriesAccompagnement } from '../../categories/schemas/categoriesAccompagnement.schema'; import { CategoriesFormations } from '../../categories/schemas/categoriesFormations.schema'; import { CategoriesOthers } from '../../categories/schemas/categoriesOthers.schema'; +import { UnclaimedStructureDto } from '../../admin/dto/unclaimed-structure-dto'; @Injectable() export class StructuresService { @@ -152,6 +153,19 @@ export class StructuresService { return this.structureModel.find({ deletedAt: { $exists: false }, accountVerified: true }).exec(); } + public async findAllUnclaimed(): Promise<UnclaimedStructureDto[]> { + const structures = await this.structureModel.find({ deletedAt: { $exists: false } }).exec(); + const unclaimedStructures = []; + await Promise.all( + structures.map(async (structure: StructureDocument) => { + if (!(await this.userService.isStructureClaimed(structure.id))) { + unclaimedStructures.push({ structureId: structure.id, structureName: structure.structureName }); + } + }) + ); + return unclaimedStructures; + } + public async populateES(): Promise<StructureDocument[]> { const structures = await this.structureModel.find({ deletedAt: { $exists: false } }).exec(); await Promise.all( -- GitLab