Files
clipperia-api/src/modules/usuarios/usuarios.controller.ts
2025-11-02 20:40:34 -03:00

66 lines
1.6 KiB
TypeScript

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<PaginatedResponse<UsuariosResponseDto> | 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<UsuariosResponseDto> {
return this.usuariosService.get(uuid);
}
@Post()
@UsePipes(
new ValidationPipe({
whitelist: true,
forbidNonWhitelisted: true,
transform: true,
}),
)
async create(@Body() body: CreateUsuarioDto): Promise<UsuariosResponseDto> {
return this.usuariosService.create(body);
}
@Patch(':uuid/email-verificado')
async emailVerificado(
@Param('uuid') uuid: string,
): Promise<UsuariosResponseDto> {
return this.usuariosService.emailVerificado(uuid);
}
}