import { Body, Controller, Delete, Get, Param, ParseIntPipe, Post, Put, Query,UseGuards } from '@nestjs/common'; import { ProfesorService } from './profesor.service'; import { profesorDto } from './dto/profesorDto.dto'; import {Roles} from '../permissions/roles.decorator' import {RolesGuard} from '../permissions/roles.guard' import {Role} from '../permissions/role.enum' @Controller('profesor') @UseGuards(RolesGuard) export class ProfesorController { constructor(private profesorService: ProfesorService) {} @Post() @Roles(Role.Responsable,Role.Admin) async register(@Body() data: profesorDto) { return this.profesorService.register(data); } @Get() findAll() { return this.profesorService.findAll(); } @Get('page') findAllPaginated(@Query('page') page: number = 1, @Query('limit') limit: number = 10, @Query() filters: any) { page = page < 1 ? 1 : page; limit = limit > 10 || limit < 1 ? 10 : limit; return this.profesorService.findAllPaginated(page, limit, filters); } @Put(':id_profesor') @Roles(Role.Responsable,Role.Admin) async modify(@Param('id_profesor', ParseIntPipe) id_profesor: number, @Body() data: profesorDto) { return this.profesorService.modify(id_profesor, data); } @Delete(':id_profesor') @Roles(Role.Responsable,Role.Admin) async remove(@Param('id_profesor', ParseIntPipe) id_profesor: number) { return this.profesorService.remove(id_profesor); } @Get(':id_profesor') async profile(@Param('id_profesor', ParseIntPipe) id_profesor: number) { return this.profesorService.profile(id_profesor); } @Post('filter') async filter(@Body() data: profesorDto) { return this.profesorService.filter(data); } }