66 lines
1.6 KiB
TypeScript
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);
|
|
}
|
|
}
|