mejoras
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
import { IsInt, IsString } from 'class-validator';
|
||||
|
||||
export class MultarDto {
|
||||
@IsString()
|
||||
descripcion: string;
|
||||
|
||||
@IsInt()
|
||||
id_institucion_infraccion: number;
|
||||
|
||||
@IsInt()
|
||||
id_operador: number;
|
||||
|
||||
@IsInt()
|
||||
id_prestamo: number;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { IsInt } from 'class-validator';
|
||||
|
||||
export class QuitarMultarDto {
|
||||
@IsInt()
|
||||
id_institucion_usuario: number;
|
||||
}
|
||||
@@ -22,6 +22,10 @@ export class MultasEquipoOutputDto {
|
||||
@Expose()
|
||||
retraso;
|
||||
|
||||
@Expose()
|
||||
@Type(() => InstitucionInfraccionOutputDto)
|
||||
institucionInfraccion;
|
||||
|
||||
@Expose()
|
||||
@Type(() => OperadorMinOutputDto)
|
||||
opeardorMulta;
|
||||
@@ -29,8 +33,4 @@ export class MultasEquipoOutputDto {
|
||||
@Expose()
|
||||
@Type(() => PrestamoEquipoMinOutputDto)
|
||||
prestamo;
|
||||
|
||||
@Expose()
|
||||
@Type(() => InstitucionInfraccionOutputDto)
|
||||
institucionInfraccion;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,10 @@ export class MultasUsuarioOutputDto {
|
||||
@Expose()
|
||||
retraso;
|
||||
|
||||
@Expose()
|
||||
@Type(() => InstitucionInfraccionOutputDto)
|
||||
institucionInfraccion;
|
||||
|
||||
@Expose()
|
||||
@Type(() => OperadorMinOutputDto)
|
||||
opeardorMulta;
|
||||
@@ -29,8 +33,4 @@ export class MultasUsuarioOutputDto {
|
||||
@Expose()
|
||||
@Type(() => PrestamoUsuarioMinOutputDto)
|
||||
prestamo;
|
||||
|
||||
@Expose()
|
||||
@Type(() => InstitucionInfraccionOutputDto)
|
||||
institucionInfraccion;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,10 @@ export class MultasOutputDto {
|
||||
@Expose()
|
||||
retraso;
|
||||
|
||||
@Expose()
|
||||
@Type(() => InstitucionInfraccionOutputDto)
|
||||
institucionInfraccion;
|
||||
|
||||
@Expose()
|
||||
@Type(() => OperadorMinOutputDto)
|
||||
opeardorMulta;
|
||||
@@ -29,8 +33,4 @@ export class MultasOutputDto {
|
||||
@Expose()
|
||||
@Type(() => PrestamoMinOutputDto)
|
||||
prestamo;
|
||||
|
||||
@Expose()
|
||||
@Type(() => InstitucionInfraccionOutputDto)
|
||||
institucionInfraccion;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import { Controller, Get, Query } from '@nestjs/common';
|
||||
import { ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
|
||||
import { Body, Controller, Get, Post, Put, Query } from '@nestjs/common';
|
||||
import { ApiBody, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
|
||||
import { Serealize } from '../interceptors/serialize.interceptor';
|
||||
import { MultaService } from './multa.service';
|
||||
import { IdUsuarioDto } from '../dto/id-usuario.dto';
|
||||
import { IdEquipoPaginaDto } from '../dto/id-equipo-pagina.dto';
|
||||
import { MultarDto } from './dto/input/multar.dto';
|
||||
import { MultasDto } from './dto/input/multas.dto';
|
||||
import { QuitarMultarDto } from './dto/input/quitar.dto';
|
||||
import { MultasUsuarioDto } from './dto/input/multas-usuario.dto';
|
||||
import { MultasOutputDto } from './dto/output/multas.dto';
|
||||
import { MultasEquipoOutputDto } from './dto/output/multas-equipo.dto';
|
||||
@@ -16,6 +18,31 @@ import { MultasUsuarioOutputDto } from './dto/output/multas-usuario.dto';
|
||||
export class MultaController {
|
||||
constructor(private multaService: MultaService) {}
|
||||
|
||||
@Post()
|
||||
@ApiOperation({ description: 'Endpoint utilizado para multar a un usuario.' })
|
||||
@ApiBody({
|
||||
description: 'Todas las vairales son obligatorias.',
|
||||
examples: {
|
||||
ejemplo: {
|
||||
value: {
|
||||
id_institucion_infraccion: 1,
|
||||
id_operador: 1,
|
||||
id_prestamo: 1,
|
||||
descripcion: '',
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
multar(@Body() body: MultarDto) {
|
||||
return this.multaService.create(
|
||||
body.id_prestamo,
|
||||
body.id_operador,
|
||||
body.descripcion,
|
||||
null,
|
||||
body.id_institucion_infraccion,
|
||||
);
|
||||
}
|
||||
|
||||
@Serealize(MultasOutputDto)
|
||||
@Get()
|
||||
@ApiOperation({
|
||||
@@ -90,7 +117,8 @@ export class MultaController {
|
||||
@Serealize(MultasMinOutputDto)
|
||||
@Get('multas-usuario-activas')
|
||||
@ApiOperation({
|
||||
description: 'Endpoint que retorna todas las multas de un usuario que esten activas.',
|
||||
description:
|
||||
'Endpoint que retorna todas las multas de un usuario que esten activas.',
|
||||
})
|
||||
@ApiQuery({
|
||||
description: 'Id del usuario.',
|
||||
@@ -101,6 +129,19 @@ export class MultaController {
|
||||
return this.multaService.findMultasActivas(parseInt(query.id_usuario));
|
||||
}
|
||||
|
||||
@Put()
|
||||
@ApiOperation({
|
||||
description:
|
||||
'Endpoint que se encarga de quitar la multa de un alumno de cierta una.',
|
||||
})
|
||||
@ApiBody({
|
||||
description: 'La variable id_institucion_usuario es obligatoria.',
|
||||
examples: { example: { value: { id_institucion_usuario: 1 } } },
|
||||
})
|
||||
quitarMulta(@Body() body: QuitarMultarDto) {
|
||||
return this.multaService.quitarMulta(body.id_institucion_usuario);
|
||||
}
|
||||
|
||||
// @Get('reporte')
|
||||
// reporte() {}
|
||||
}
|
||||
|
||||
+48
-16
@@ -138,20 +138,20 @@ export class MultaService {
|
||||
const query = this.repository
|
||||
.createQueryBuilder('mu')
|
||||
.innerJoinAndSelect('mu.institucionInfraccion', 'ii')
|
||||
.innerJoinAndSelect('ii.infraccion', 'inf')
|
||||
.innerJoinAndSelect('mu.opeardorMulta', 'om')
|
||||
.innerJoinAndSelect('om.tipoUsuario', 'tu')
|
||||
.innerJoinAndSelect('mu.prestamo', 'p')
|
||||
.innerJoinAndSelect('ii.infraccion', 'inf')
|
||||
.innerJoinAndSelect('om.tipoUsuario', 'tu')
|
||||
.innerJoinAndSelect('p.equipo', 'e')
|
||||
.innerJoinAndSelect('e.carrito', 'c')
|
||||
.innerJoinAndSelect('c.modulo', 'm')
|
||||
.innerJoinAndSelect('m.institucion', 'i')
|
||||
.innerJoinAndSelect('c.tipoCarrito', 'tc')
|
||||
.innerJoinAndSelect('p.usuario', 'u')
|
||||
.innerJoinAndSelect('e.carrito', 'c')
|
||||
.innerJoinAndSelect('u.instituciones', 'is')
|
||||
.innerJoinAndSelect('c.modulo', 'm')
|
||||
.innerJoinAndSelect('c.tipoCarrito', 'tc')
|
||||
.innerJoinAndSelect('is.institucionCarrera', 'ic')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('m.institucion', 'i')
|
||||
.innerJoinAndSelect('ic.carrera', 'ca')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ca.nivel', 'n')
|
||||
.orderBy('i.institucion')
|
||||
.addOrderBy('u.usuario')
|
||||
@@ -178,19 +178,19 @@ export class MultaService {
|
||||
this.repository
|
||||
.createQueryBuilder('mu')
|
||||
.innerJoinAndSelect('mu.institucionInfraccion', 'ii')
|
||||
.innerJoinAndSelect('mu.opeardorMulta', 'om')
|
||||
.innerJoinAndSelect('mu.prestamo', 'p')
|
||||
.innerJoinAndSelect('ii.infraccion', 'inf')
|
||||
.innerJoinAndSelect('ii.institucion', 'i')
|
||||
.innerJoinAndSelect('mu.opeardorMulta', 'om')
|
||||
.innerJoinAndSelect('om.tipoUsuario', 'tu')
|
||||
.innerJoinAndSelect('mu.prestamo', 'p')
|
||||
.innerJoinAndSelect('p.equipo', 'e', 'e.id_equipo = :id_equipo', {
|
||||
id_equipo: equipo.id_equipo,
|
||||
})
|
||||
.innerJoinAndSelect('p.usuario', 'u')
|
||||
.innerJoinAndSelect('u.instituciones', 'is')
|
||||
.innerJoinAndSelect('is.institucionCarrera', 'ic')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ic.carrera', 'ca')
|
||||
.innerJoinAndSelect('ic.institucion', 'in')
|
||||
.innerJoinAndSelect('ca.nivel', 'n')
|
||||
.orderBy('mu.id_multa', 'DESC')
|
||||
.skip((pagina - 1) * 25)
|
||||
@@ -204,19 +204,19 @@ export class MultaService {
|
||||
this.repository
|
||||
.createQueryBuilder('mu')
|
||||
.innerJoinAndSelect('mu.institucionInfraccion', 'ii')
|
||||
.innerJoinAndSelect('mu.opeardorMulta', 'om')
|
||||
.innerJoinAndSelect('mu.prestamo', 'p')
|
||||
.innerJoinAndSelect('ii.infraccion', 'inf')
|
||||
.innerJoinAndSelect('ii.institucion', 'i')
|
||||
.innerJoinAndSelect('mu.opeardorMulta', 'om')
|
||||
.innerJoinAndSelect('om.tipoUsuario', 'tu')
|
||||
.innerJoinAndSelect('mu.prestamo', 'p')
|
||||
.innerJoinAndSelect('p.equipo', 'e')
|
||||
.innerJoinAndSelect('e.carrito', 'c')
|
||||
.innerJoinAndSelect('c.modulo', 'm')
|
||||
.innerJoinAndSelect('m.institucion', 'in')
|
||||
.innerJoinAndSelect('c.tipoCarrito', 'tc')
|
||||
.innerJoinAndSelect('p.usuario', 'u', 'u.id_usuario = :id_usuario', {
|
||||
id_usuario: usuario.id_usuario,
|
||||
})
|
||||
.innerJoinAndSelect('e.carrito', 'c')
|
||||
.innerJoinAndSelect('c.modulo', 'm')
|
||||
.innerJoinAndSelect('c.tipoCarrito', 'tc')
|
||||
.innerJoinAndSelect('m.institucion', 'in')
|
||||
.orderBy('mu.id_multa', 'DESC')
|
||||
.skip((pagina - 1) * 25)
|
||||
.take(25)
|
||||
@@ -238,4 +238,36 @@ export class MultaService {
|
||||
.getMany(),
|
||||
);
|
||||
}
|
||||
|
||||
async quitarMulta(id_institucion_usuario: number) {
|
||||
const institucionUsuario = await this.institucionUsuarioService.findById(
|
||||
id_institucion_usuario,
|
||||
);
|
||||
|
||||
return this.repository
|
||||
.createQueryBuilder('mu')
|
||||
.innerJoin('mu.prestamo', 'p')
|
||||
.innerJoin('p.usuario', 'u')
|
||||
.innerJoin(
|
||||
'u.instituciones',
|
||||
'is',
|
||||
'is.id_institucion_usuario = :id_institucion_usuario',
|
||||
{
|
||||
id_institucion_usuario: institucionUsuario.id_institucion_usuario,
|
||||
},
|
||||
)
|
||||
.where('activo = 1')
|
||||
.getOne()
|
||||
.then((multa) => {
|
||||
if (!multa)
|
||||
throw new ConflictException(
|
||||
'Este usuario no tiene una multa activa en esta institución.',
|
||||
);
|
||||
multa.activo = false;
|
||||
institucionUsuario.multa = false;
|
||||
return this.repository.save(multa);
|
||||
})
|
||||
.then((_) => this.institucionUsuarioService.update(institucionUsuario))
|
||||
.then((_) => ({ message: 'Se guardaron los cambios correctamente.' }));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user