import { Body, Controller, Get, Post, Put, Query, UseGuards, } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { ApiBody, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger'; import { ModuloService } from './modulo.service'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { ModuloCreateDto } from './dto/modulo-create.dto'; import { ModuloUpdateDto } from './dto/modulo-update.dto'; // import { Serealize } from '../interceptors/serialize.interceptor'; @Controller('modulo') @ApiTags('modulo') export class ModuloController { constructor(private moduloService: ModuloService) {} @Post() // @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que crea un módulo.' }) @ApiBody({ description: 'Ambas variables son obligatorias.', examples: { ejemplo: { value: { id_institucion: 200, modulo: '' } } }, }) create(@Body() body: ModuloCreateDto) { return this.moduloService.create(body.id_institucion, body.modulo); } @Get() @ApiOperation({ description: 'Endpoint que retorna todos los módulos de una institución.', }) @ApiQuery({ description: 'Id de la institución.', name: 'id_institucion', type: 'string', }) modulos(@Query() query: IdInstitucionDto) { return this.moduloService.findAllByIdInstitucion( parseInt(query.id_institucion), ); } @Put() // @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que actualiza la información de un módulo.', }) @ApiBody({ description: 'Todas las variables a excepción de id_modulo son opcionales.', examples: { ejemplo: { value: { id_modulo: 1, activo: true, modulo: '' } }, }, }) update(@Body() body: ModuloUpdateDto) { return this.moduloService.update(body); } }