diff --git a/src/multa/dto/input/usuario.dto.ts b/src/multa/dto/input/multas-usuario.dto.ts similarity index 80% rename from src/multa/dto/input/usuario.dto.ts rename to src/multa/dto/input/multas-usuario.dto.ts index 1409191..fd949fd 100644 --- a/src/multa/dto/input/usuario.dto.ts +++ b/src/multa/dto/input/multas-usuario.dto.ts @@ -1,6 +1,6 @@ import { IsNumberString } from 'class-validator'; -export class MultaUsuarioDto { +export class MultasUsuarioDto { @IsNumberString() id_usuario: string; diff --git a/src/multa/dto/input/multas.dto.ts b/src/multa/dto/input/multas.dto.ts index f18d6ab..b6598ab 100644 --- a/src/multa/dto/input/multas.dto.ts +++ b/src/multa/dto/input/multas.dto.ts @@ -1,4 +1,4 @@ -import { IsNumberString, IsOptional } from 'class-validator'; +import { IsNumberString, IsOptional, IsString } from 'class-validator'; export class MultasDto { @IsNumberString() @@ -7,4 +7,8 @@ export class MultasDto { @IsNumberString() @IsOptional() id_institucion?: string; + + @IsString() + @IsOptional() + usuario?: string; } diff --git a/src/multa/dto/output/multas-equipo.dto.ts b/src/multa/dto/output/multas-equipo.dto.ts new file mode 100644 index 0000000..168d48c --- /dev/null +++ b/src/multa/dto/output/multas-equipo.dto.ts @@ -0,0 +1,36 @@ +import { Expose, Type } from 'class-transformer'; +import { InstitucionInfraccionOutputDto } from '../../../institucion-infraccion/dto/output/institucion-infraccion.dto'; +import { PrestamoMinEquipoOutputDto } from '../../../prestamo/dto/output/prestamo-min-equipo.dto'; +import { OperadorMinsOutputDto } from '../../../operador/dto/output/operador-min.dto'; + +export class MultasEquipoOutputDto { + @Expose() + activo; + + @Expose() + descripcion; + + @Expose() + fecha_fin; + + @Expose() + fecha_inicio; + + @Expose() + id_multa; + + @Expose() + retraso; + + @Expose() + @Type(() => OperadorMinsOutputDto) + opeardorMulta; + + @Expose() + @Type(() => PrestamoMinEquipoOutputDto) + prestamo; + + @Expose() + @Type(() => InstitucionInfraccionOutputDto) + institucionInfraccion; +} diff --git a/src/multa/dto/output/multas-usuario.dto.ts b/src/multa/dto/output/multas-usuario.dto.ts new file mode 100644 index 0000000..3916047 --- /dev/null +++ b/src/multa/dto/output/multas-usuario.dto.ts @@ -0,0 +1,36 @@ +import { Expose, Type } from 'class-transformer'; +import { InstitucionInfraccionOutputDto } from '../../../institucion-infraccion/dto/output/institucion-infraccion.dto'; +import { PrestamoMinUsuarioOutputDto } from '../../../prestamo/dto/output/prestamo-min-usuario.dto'; +import { OperadorMinsOutputDto } from '../../../operador/dto/output/operador-min.dto'; + +export class MultasUsuarioOutputDto { + @Expose() + activo; + + @Expose() + descripcion; + + @Expose() + fecha_fin; + + @Expose() + fecha_inicio; + + @Expose() + id_multa; + + @Expose() + retraso; + + @Expose() + @Type(() => OperadorMinsOutputDto) + opeardorMulta; + + @Expose() + @Type(() => PrestamoMinUsuarioOutputDto) + prestamo; + + @Expose() + @Type(() => InstitucionInfraccionOutputDto) + institucionInfraccion; +} diff --git a/src/multa/dto/output/multas.dto.ts b/src/multa/dto/output/multas.dto.ts new file mode 100644 index 0000000..c3a0560 --- /dev/null +++ b/src/multa/dto/output/multas.dto.ts @@ -0,0 +1,36 @@ +import { Expose, Type } from 'class-transformer'; +import { InstitucionInfraccionOutputDto } from '../../../institucion-infraccion/dto/output/institucion-infraccion.dto'; +import { PrestamoMinOutputDto } from '../../../prestamo/dto/output/prestamo-min.dto'; +import { OperadorMinsOutputDto } from '../../../operador/dto/output/operador-min.dto'; + +export class MultasOutputDto { + @Expose() + activo; + + @Expose() + descripcion; + + @Expose() + fecha_fin; + + @Expose() + fecha_inicio; + + @Expose() + id_multa; + + @Expose() + retraso; + + @Expose() + @Type(() => OperadorMinsOutputDto) + opeardorMulta; + + @Expose() + @Type(() => PrestamoMinOutputDto) + prestamo; + + @Expose() + @Type(() => InstitucionInfraccionOutputDto) + institucionInfraccion; +} diff --git a/src/multa/multa.controller.ts b/src/multa/multa.controller.ts index 9d8144c..9d6da2f 100644 --- a/src/multa/multa.controller.ts +++ b/src/multa/multa.controller.ts @@ -4,31 +4,44 @@ import { Serealize } from '../interceptors/serialize.interceptor'; import { MultaService } from './multa.service'; import { IdEquipoPaginaDto } from '../dto/id-equipo-pagina.dto'; import { MultasDto } from './dto/input/multas.dto'; -import { MultaUsuarioDto } from './dto/input/usuario.dto'; +import { MultasUsuarioDto } from './dto/input/multas-usuario.dto'; +import { MultasOutputDto } from './dto/output/multas.dto'; +import { MultasEquipoOutputDto } from './dto/output/multas-equipo.dto'; +import { MultasUsuarioOutputDto } from './dto/output/multas-usuario.dto'; @Controller('multa') @ApiTags('multa') export class MultaController { constructor(private multaService: MultaService) {} + @Serealize(MultasOutputDto) @Get() @ApiOperation({ - description: 'Endpoint que retorna todas las multas de una institución.', - }) - @ApiQuery({ - description: 'Id de la institución.', - name: 'id_institucion', - type: 'string', + description: + 'Endpoint que retorna 25 multas dependiendo de la página en la que este el usuario y sus filtros.', }) @ApiQuery({ description: 'Página en la que se encuentra el usuario.', name: 'pagina', type: 'string', }) + @ApiQuery({ + description: 'Id de la institución.', + name: 'id_institucion', + type: 'string', + required: false, + }) + @ApiQuery({ + description: 'Usuario que se quiere usar como filtro.', + name: 'usuario', + type: 'string', + required: false, + }) multas(@Query() query: MultasDto) { return this.multaService.findAll(query); } + @Serealize(MultasEquipoOutputDto) @Get('multas-equipo') @ApiOperation({ description: 'Endpoint que retorna todas las multas de un equipo.', @@ -50,6 +63,7 @@ export class MultaController { ); } + @Serealize(MultasUsuarioOutputDto) @Get('multas-usuario') @ApiOperation({ description: 'Endpoint que retorna todas las multas de un usuario .', @@ -64,7 +78,12 @@ export class MultaController { name: 'pagina', type: 'string', }) - multasUsuario(@Query() query: MultaUsuarioDto) {} + multasUsuario(@Query() query: MultasUsuarioDto) { + return this.multaService.findAllByIdUsuario( + parseInt(query.id_usuario), + parseInt(query.pagina), + ); + } // @Get('reporte') // reporte() {} diff --git a/src/multa/multa.service.ts b/src/multa/multa.service.ts index 02b7d7f..172aa0f 100644 --- a/src/multa/multa.service.ts +++ b/src/multa/multa.service.ts @@ -120,6 +120,10 @@ export class MultaService { c: 'e.carrito', m: 'c.modulo', i: 'm.institucion', + u: 'p.usuario', + ci: 'u.institucionCarrera', + ca: 'ci.carrera', + n: 'ca.nivel', }, }, where: busqueda, @@ -136,9 +140,10 @@ export class MultaService { innerJoinAndSelect: { p: 'mu.prestamo', e: 'p.equipo', - c: 'e.carrito', - m: 'c.modulo', - i: 'm.institucion', + u: 'p.usuario', + ci: 'u.institucionCarrera', + ca: 'ci.carrera', + n: 'ca.nivel', }, }, where: { prestamo: { equipo } }, diff --git a/src/prestamo/dto/output/prestamo-min-equipo.dto.ts b/src/prestamo/dto/output/prestamo-min-equipo.dto.ts new file mode 100644 index 0000000..9fe4637 --- /dev/null +++ b/src/prestamo/dto/output/prestamo-min-equipo.dto.ts @@ -0,0 +1,23 @@ +import { Expose, Type } from 'class-transformer'; +import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto'; + +export class PrestamoMinEquipoOutputDto { + @Expose() + fecha_entrega; + + @Expose() + fecha_inicio; + + @Expose() + hora_fin; + + @Expose() + hora_inicio; + + @Expose() + id_prestamo; + + @Expose() + @Type(() => UsuariosOutputDto) + usuario; +} diff --git a/src/prestamo/dto/output/prestamo-min-usuario.dto.ts b/src/prestamo/dto/output/prestamo-min-usuario.dto.ts new file mode 100644 index 0000000..7452ecc --- /dev/null +++ b/src/prestamo/dto/output/prestamo-min-usuario.dto.ts @@ -0,0 +1,23 @@ +import { Expose, Type } from 'class-transformer'; +import { EquipoMinOutputDto } from '../../../equipo/dto/output/equipo-min.dto'; + +export class PrestamoMinUsuarioOutputDto { + @Expose() + fecha_entrega; + + @Expose() + fecha_inicio; + + @Expose() + hora_fin; + + @Expose() + hora_inicio; + + @Expose() + id_prestamo; + + @Expose() + @Type(() => EquipoMinOutputDto) + equipo; +} diff --git a/src/prestamo/dto/output/prestamo-min.dto.ts b/src/prestamo/dto/output/prestamo-min.dto.ts new file mode 100644 index 0000000..979df8d --- /dev/null +++ b/src/prestamo/dto/output/prestamo-min.dto.ts @@ -0,0 +1,28 @@ +import { Expose, Type } from 'class-transformer'; +import { EquipoMinOutputDto } from '../../../equipo/dto/output/equipo-min.dto'; +import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto'; + +export class PrestamoMinOutputDto { + @Expose() + fecha_entrega; + + @Expose() + fecha_inicio; + + @Expose() + hora_fin; + + @Expose() + hora_inicio; + + @Expose() + id_prestamo; + + @Expose() + @Type(() => EquipoMinOutputDto) + equipo; + + @Expose() + @Type(() => UsuariosOutputDto) + usuario; +}