diff --git a/src/admin/admin.controller.ts b/src/admin/admin.controller.ts index 999c6d949ba0026bdc654d172dc703459030ed50..4cc4343147c7e9982f3ef10396561544917b763d 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 0000000000000000000000000000000000000000..c57eedbd30d908debab1d539676731e1a7c79388 --- /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 8e582acc9da8d8d3e96fbd098998d4ea397a83b4..6b70fb759afb91ac0cdbf13aa65569eb43dfc2a1 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(