pcpuma_unam_api/src/usuario/usuario.controller.ts

183 lines
5.0 KiB
TypeScript
Raw Normal View History

2022-04-22 03:50:07 +00:00
import {
Body,
Controller,
Get,
Post,
Put,
Query,
UseGuards,
} from '@nestjs/common';
2022-05-02 20:29:13 +00:00
import { AuthGuard } from '@nestjs/passport';
2022-05-31 00:48:04 +00:00
import { ApiBody, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
2022-06-13 17:59:15 +00:00
import { Serealize } from '../interceptors/serialize.interceptor';
2022-04-05 01:53:32 +00:00
import { UsuarioService } from './usuario.service';
2022-06-13 17:59:15 +00:00
import { UsuarioDgaeDto } from './dto/input/dgae.dto';
import { UsuarioDgpDto } from './dto/input/dgp.dto';
import { UsuarioRegistrarDto } from './dto/input/registrar.dto';
import { UsuarioUpdateDto } from './dto/input/update.dto';
import { UsuarioUsuariosDto } from './dto/input/usuarios.dto';
import { UsuarioDto } from './dto/input/usuario.dto';
import { EscolaresOutputDto } from './dto/output/escolares.dto';
import { UsuarioOutputDto } from './dto/output/usuario.dto';
import { UsuariosOutputDto } from './dto/output/usuarios.dto';
2022-03-30 04:03:19 +00:00
@Controller('usuario')
2022-05-31 00:48:04 +00:00
@ApiTags('usuario')
2022-04-05 01:53:32 +00:00
export class UsuarioController {
constructor(private usuarioService: UsuarioService) {}
2022-04-18 04:32:22 +00:00
2022-06-13 17:59:15 +00:00
@Serealize(EscolaresOutputDto)
@Get('dgae')
@ApiOperation({
description: 'Endpoint que retorna información de dgae de un alumno.',
})
@ApiQuery({
description: 'Número de cuenta del alumno.',
name: 'usuario',
type: 'string',
})
@ApiQuery({
description: 'Id de la carrera institución a la que pertenece el alumno.',
name: 'id_institucion_carrera',
type: 'string',
})
dgae(@Query() query: UsuarioDgaeDto) {
return this.usuarioService.DGAE(
query.usuario,
parseInt(query.id_institucion_carrera),
);
}
2022-06-13 17:59:15 +00:00
@Serealize(EscolaresOutputDto)
@Get('dgp')
@ApiOperation({
description: 'Endpoint que retorna información de dgp de un profesor.',
})
@ApiQuery({
description: 'Número de cuenta del profesor.',
name: 'usuario',
type: 'string',
})
@ApiQuery({ description: 'RFC del profesor.', name: 'rfc', type: 'string' })
dgp(@Query() query: UsuarioDgpDto) {
return this.usuarioService.DGP(query.usuario, query.rfc);
}
2022-04-18 04:32:22 +00:00
@Post('registrar')
2022-05-31 00:48:04 +00:00
@ApiOperation({
description: 'Enpoint que realiza el registro de un usuario.',
})
@ApiBody({
description:
'Todas la variables a excepción de id_usuario son obligatorias.',
examples: {
ejemplo: { value: { id_usuario: 1, telefono: '', correo: '' } },
},
})
2022-04-20 20:49:21 +00:00
registrar(@Body() body: UsuarioRegistrarDto) {
2022-06-06 13:32:40 +00:00
return this.usuarioService.registrar(
body.id_usuario,
body.telefono,
body.correo,
);
2022-04-20 20:49:21 +00:00
}
2022-04-18 04:32:22 +00:00
@Put()
2022-05-09 19:49:38 +00:00
// @UseGuards(AuthGuard('jwt'))
2022-05-31 00:48:04 +00:00
@ApiOperation({
description: 'Enpoint que actualiza la información de un usuario.',
})
@ApiBody({
description:
'Todas las variables a excepción de id_usuario son opcionales.',
examples: {
ejemplo: {
value: {
id_usuario: 1,
activo: true,
multa: false,
telefono: '',
correo: '',
},
},
},
})
2022-04-20 20:49:21 +00:00
update(@Body() body: UsuarioUpdateDto) {
return this.usuarioService.update(body);
}
2022-04-18 04:32:22 +00:00
2022-04-24 16:57:30 +00:00
@Put('update-password')
2022-05-09 19:49:38 +00:00
// @UseGuards(AuthGuard('jwt'))
2022-05-31 00:48:04 +00:00
@ApiOperation({
description: 'Enpoint que envía una nueva password al correo del usuario.',
})
@ApiBody({
description: 'Es obligatorio enviar el campo id_usuario.',
examples: { ejemplo: { value: { id_usuario: 1 } } },
})
2022-04-24 16:57:30 +00:00
passwordResset(@Body() body: UsuarioUpdateDto) {
return this.usuarioService.passwordReset(body.id_usuario);
}
2022-06-13 17:59:15 +00:00
@Serealize(UsuarioOutputDto)
2022-04-18 04:32:22 +00:00
@Get('usuario')
2022-05-09 19:49:38 +00:00
// @UseGuards(AuthGuard('jwt'))
2022-05-31 00:48:04 +00:00
@ApiOperation({
description: 'Enpoint que retorna la información de un usuario.',
})
@ApiQuery({
2022-06-01 16:06:46 +00:00
description: 'El número de cuenta que se quiere buscar.',
name: 'usuario',
2022-05-31 00:48:04 +00:00
type: 'string',
})
2022-04-20 20:49:21 +00:00
usuario(@Query() query: UsuarioDto) {
2022-06-01 16:06:46 +00:00
return this.usuarioService.findByUsuario(query.usuario, true, true);
2022-04-20 20:49:21 +00:00
}
2022-04-18 04:32:22 +00:00
2022-06-13 17:59:15 +00:00
@Serealize(UsuariosOutputDto)
2022-04-18 04:32:22 +00:00
@Get('usuarios')
2022-05-09 19:49:38 +00:00
// @UseGuards(AuthGuard('jwt'))
2022-05-31 00:48:04 +00:00
@ApiOperation({
description:
'Endpoint que retorna 25 usuarios dependiendo de la página en la que se encuentra el usuario y sus filtros.',
})
@ApiQuery({
description: 'Página en la que se encuentra el usuario.',
name: 'pagina',
type: 'string',
})
@ApiQuery({
2022-06-12 18:35:47 +00:00
description: 'Id de la institución que se quiere usar como filtro.',
2022-05-31 00:48:04 +00:00
name: 'id_institucion',
type: 'string',
required: false,
})
@ApiQuery({
2022-06-12 18:35:47 +00:00
description: 'Id de la carrera que se quiere usar como filtro.',
2022-05-31 00:48:04 +00:00
name: 'id_carrera',
type: 'string',
required: false,
})
@ApiQuery({
2022-06-12 18:35:47 +00:00
description: 'Id del tipo usuario que se quiere usar como filtro.',
2022-05-31 00:48:04 +00:00
name: 'id_tipo_usuario',
type: 'string',
required: false,
})
@ApiQuery({
2022-06-12 18:35:47 +00:00
description: 'Nombre del usuario que se quiere buscar.',
2022-05-31 00:48:04 +00:00
name: 'nombre',
type: 'string',
required: false,
})
@ApiQuery({
2022-06-12 18:35:47 +00:00
description: 'Usuario que se quiere buscar.',
2022-05-31 00:48:04 +00:00
name: 'usuario',
type: 'string',
required: false,
})
2022-04-20 20:49:21 +00:00
usuarios(@Query() query: UsuarioUsuariosDto) {
return this.usuarioService.findAll(query);
}
2022-04-05 01:53:32 +00:00
}