import { Body, Controller, Delete, Get, Param, ParseIntPipe, Patch, Post, UseGuards, } from '@nestjs/common'; import { AdministradorService } from './administrador.service'; import { Administrador } from './entities/administrador.entity'; import { CreateAdministradorDto } from './dto/create-administrador.dto'; import { UpdateAdministradorDto } from './dto/update.administrador.dto'; import { LoginAdministradorDto } from './dto/login-administrador.dto'; import { ChangePasswordDto } from './dto/change-password.dto'; import { ApiBearerAuth } from '@nestjs/swagger'; import { JwtAuthGuard } from '../auth/jwt-auth.guard'; import { AdministradorApiDocumentation } from './docs/administrador.documentation'; import { JwtValidationGuard } from 'src/auth/guards/jwt-validation.guard'; import { Roles } from 'src/auth/decorators/roles.decorator'; import { RolesGuard } from 'src/auth/guards/roles.guard'; @AdministradorApiDocumentation.ApiController @ApiBearerAuth() @Controller('administrador') export class AdministradorController { constructor(private administradorService: AdministradorService) {} @Get() @UseGuards(RolesGuard) @UseGuards(JwtValidationGuard) @Roles('administrador') @AdministradorApiDocumentation.ApiGetAll getAdministradores(): Promise { return this.administradorService.getAdministradores(); } @Get(':id') @UseGuards(RolesGuard) @UseGuards(JwtValidationGuard) @Roles('administrador') @AdministradorApiDocumentation.ApiGetOne getAdministrador(@Param('id', ParseIntPipe) id: number) { return this.administradorService.getAdminByIdOrFail(id); } @Post() @Roles('administrador') @AdministradorApiDocumentation.ApiCreate createAdministrador(@Body() newAdministrador: CreateAdministradorDto) { return this.administradorService.createAdministrador(newAdministrador); } @Post('login') @AdministradorApiDocumentation.ApiLogin login(@Body() loginData: LoginAdministradorDto) { return this.administradorService.login( loginData.nombre_usuario, loginData.password, ); } @Patch(':id/change-password') @UseGuards(RolesGuard) @UseGuards(JwtValidationGuard) @Roles('administrador') @AdministradorApiDocumentation.ApiChangePassword changePassword( @Param('id', ParseIntPipe) id: number, @Body() changePasswordDto: ChangePasswordDto, ) { return this.administradorService.changePassword( id, changePasswordDto.currentPassword, changePasswordDto.newPassword, ); } @Delete(':id') @UseGuards(RolesGuard) @UseGuards(JwtValidationGuard) @Roles('administrador') @AdministradorApiDocumentation.ApiRemove deleteAdministrador(@Param('id', ParseIntPipe) id: number) { return this.administradorService.deleteAdministrador(id); } @Patch(':id') @UseGuards(RolesGuard) @UseGuards(JwtValidationGuard) @Roles('administrador') @AdministradorApiDocumentation.ApiUpdate updateAdministrador( @Param('id', ParseIntPipe) id: number, @Body() administrador: UpdateAdministradorDto, ) { return this.administradorService.updateAdministrador(id, administrador); } }