Loading backend/src/admin/admin.controller.ts +17 −3 Original line number Diff line number Diff line import { Controller, Get, Req, UseGuards } from '@nestjs/common'; import { Controller, Get, Param, Req, UseGuards } from '@nestjs/common'; import { AdminService } from './admin.service'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { ADMIN_ROLES } from 'src/shared/enum/admin-role.enum'; import { ApiBearerAuth, ApiParam, ApiTags } from '@nestjs/swagger'; import { ADMIN_ROLES, SUPERADMIN_ROLES } from 'src/shared/enum/admin-role.enum'; import { Roles } from 'src/auth/role.decorator'; import { CustomAdminRequest } from 'src/auth/admin/interface/customAdminReq'; import { AuthAdminGuard } from 'src/auth/admin/authAdmin.guard'; Loading @@ -24,4 +24,18 @@ export class AdminController { idTown: req.admin?.idTown?.townId || null, }; } @UseGuards(AuthAdminGuard) @Roles(SUPERADMIN_ROLES) @ApiParam({ name: 'idTown', type: Number }) @Get('admin/:idTown') @ApiBearerAuth('jwt') async findAllByTown(@Param('idTown') idTown: number) { try { const admins = await this.adminService.findAllByTown(idTown); return admins; } catch (e) { return e; } } } backend/src/admin/admin.service.ts +19 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ import { Repository } from 'typeorm'; import { InjectRepository } from '@nestjs/typeorm'; import { Town } from 'src/town/entities/town.entity'; import { ADMIN_ROLE } from 'src/shared/enum/admin-role.enum'; import { GetAdminDto } from './dto/get-admin.dto'; @Injectable() export class AdminService { Loading @@ -31,4 +32,22 @@ export class AdminService { async updatePassword(email: string, password: string) { await this.adminRepository.update({ email }, { password }); } async findAllByTown(idTown : number) : Promise<GetAdminDto[]> { const res: any[] = await this.adminRepository .createQueryBuilder('admin') .leftJoinAndSelect('admin.idTown', 'town') .where('admin.idTown = :idTown', { idTown: idTown }) .getMany(); const admins: GetAdminDto[] = res.map((admin) :GetAdminDto => { return { email: admin.email, idTown: admin.idTown.townId, name: admin.name, lastName: admin.lastName, status: admin.status }; }); return admins; } } backend/src/admin/dto/get-admin.dto.ts 0 → 100644 +18 −0 Original line number Diff line number Diff line import { ApiProperty } from "@nestjs/swagger"; export class GetAdminDto { @ApiProperty() email: string; @ApiProperty() idTown: number; @ApiProperty() name: string; @ApiProperty() lastName: string; @ApiProperty() status: string; } No newline at end of file Loading
backend/src/admin/admin.controller.ts +17 −3 Original line number Diff line number Diff line import { Controller, Get, Req, UseGuards } from '@nestjs/common'; import { Controller, Get, Param, Req, UseGuards } from '@nestjs/common'; import { AdminService } from './admin.service'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { ADMIN_ROLES } from 'src/shared/enum/admin-role.enum'; import { ApiBearerAuth, ApiParam, ApiTags } from '@nestjs/swagger'; import { ADMIN_ROLES, SUPERADMIN_ROLES } from 'src/shared/enum/admin-role.enum'; import { Roles } from 'src/auth/role.decorator'; import { CustomAdminRequest } from 'src/auth/admin/interface/customAdminReq'; import { AuthAdminGuard } from 'src/auth/admin/authAdmin.guard'; Loading @@ -24,4 +24,18 @@ export class AdminController { idTown: req.admin?.idTown?.townId || null, }; } @UseGuards(AuthAdminGuard) @Roles(SUPERADMIN_ROLES) @ApiParam({ name: 'idTown', type: Number }) @Get('admin/:idTown') @ApiBearerAuth('jwt') async findAllByTown(@Param('idTown') idTown: number) { try { const admins = await this.adminService.findAllByTown(idTown); return admins; } catch (e) { return e; } } }
backend/src/admin/admin.service.ts +19 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ import { Repository } from 'typeorm'; import { InjectRepository } from '@nestjs/typeorm'; import { Town } from 'src/town/entities/town.entity'; import { ADMIN_ROLE } from 'src/shared/enum/admin-role.enum'; import { GetAdminDto } from './dto/get-admin.dto'; @Injectable() export class AdminService { Loading @@ -31,4 +32,22 @@ export class AdminService { async updatePassword(email: string, password: string) { await this.adminRepository.update({ email }, { password }); } async findAllByTown(idTown : number) : Promise<GetAdminDto[]> { const res: any[] = await this.adminRepository .createQueryBuilder('admin') .leftJoinAndSelect('admin.idTown', 'town') .where('admin.idTown = :idTown', { idTown: idTown }) .getMany(); const admins: GetAdminDto[] = res.map((admin) :GetAdminDto => { return { email: admin.email, idTown: admin.idTown.townId, name: admin.name, lastName: admin.lastName, status: admin.status }; }); return admins; } }
backend/src/admin/dto/get-admin.dto.ts 0 → 100644 +18 −0 Original line number Diff line number Diff line import { ApiProperty } from "@nestjs/swagger"; export class GetAdminDto { @ApiProperty() email: string; @ApiProperty() idTown: number; @ApiProperty() name: string; @ApiProperty() lastName: string; @ApiProperty() status: string; } No newline at end of file