import { Body, Controller, Get, Param, Patch, Post, Query, UsePipes, ValidationPipe, } from '@nestjs/common'; import { UsuariosService } from './usuarios.service'; import { UsuariosResponseDto } from './dto/usuarios.response'; import { CreateUsuarioDto } from './dto/create-usuario-dto'; import { PaginatedResponse } from '@shared/dto/paginated'; import { ListUsuariosQueryDto } from './dto/list-usuarios-query.dto'; @Controller('usuarios') export class UsuariosController { constructor(private readonly usuariosService: UsuariosService) {} @Get() async list( @Query() query: ListUsuariosQueryDto, ): Promise | UsuariosResponseDto[]> { if (query.pageable || query.page || query.perPage) { return this.usuariosService.listPaginated({ page: query.page, perPage: query.perPage, direction: query.direction, name: query.name, email: query.email, }); } return this.usuariosService.list({ name: query.name, email: query.email, }); } @Get(':uuid') async get(@Param('uuid') uuid: string): Promise { return this.usuariosService.get(uuid); } @Post() @UsePipes( new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: true, }), ) async create(@Body() body: CreateUsuarioDto): Promise { return this.usuariosService.create(body); } @Patch(':uuid/email-verificado') async emailVerificado( @Param('uuid') uuid: string, ): Promise { return this.usuariosService.emailVerificado(uuid); } }