reporte multa

This commit is contained in:
xXpuma99Xx 2023-01-08 23:27:23 -06:00
parent 06a5b670fb
commit d95c7ec44c
3 changed files with 57 additions and 33 deletions

View File

@ -0,0 +1,13 @@
import { IsNotEmpty, IsOptional, IsString } from 'class-validator';
export class ReporteDto {
@IsString()
@IsNotEmpty()
@IsOptional()
nombre?: string;
@IsString()
@IsNotEmpty()
@IsOptional()
usuario?: string;
}

View File

@ -26,6 +26,7 @@ import { IdUsuarioPaginaDto } from '../dto/input/id-usuario-pagina.dto';
import { MultarDto } from './dto/input/multar.dto'; import { MultarDto } from './dto/input/multar.dto';
import { MultasDto } from './dto/input/multas.dto'; import { MultasDto } from './dto/input/multas.dto';
import { QuitarMultarDto } from './dto/input/quitar.dto'; import { QuitarMultarDto } from './dto/input/quitar.dto';
import { ReporteDto } from './dto/input/reporte.dto';
import { MessageOutputDto } from '../dto/output/message.dto'; import { MessageOutputDto } from '../dto/output/message.dto';
import { MultasOutputDto } from './dto/output/multas.dto'; import { MultasOutputDto } from './dto/output/multas.dto';
import { MultasEquipoOutputDto } from './dto/output/multas-equipo.dto'; import { MultasEquipoOutputDto } from './dto/output/multas-equipo.dto';
@ -187,13 +188,13 @@ export class MultaController {
return this.multaService.quitarMulta(admin, body.id_institucion_usuario); return this.multaService.quitarMulta(admin, body.id_institucion_usuario);
} }
// @Get('reporte') @Get('reporte')
// @UseGuards(AuthGuard('jwt')) @UseGuards(AuthGuard('jwt'))
// @ApiBearerAuth('jwt') @ApiBearerAuth('jwt')
// reporte(@Request() req) { reporte(@Request() req, @Query() query: ReporteDto) {
// const operador: Operador = req.user.operador; const operador: Operador = req.user.operador;
// this.validarUsuarioService.validarAdminOperador(operador); this.validarUsuarioService.validarAdminOperador(operador);
// // return this.multaService.findAll(operador, query); return this.multaService.findAll(operador, query);
// } }
} }

View File

@ -1,7 +1,13 @@
import * as moment from 'moment'; import * as moment from 'moment';
import { ConflictException, Injectable } from '@nestjs/common'; import { ConflictException, Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { FindOptionsWhere, LessThanOrEqual, Like, Repository } from 'typeorm'; import {
FindManyOptions,
FindOptionsWhere,
LessThanOrEqual,
Like,
Repository,
} from 'typeorm';
import { Modulo } from '../modulo/entity/modulo.entity'; import { Modulo } from '../modulo/entity/modulo.entity';
import { Multa } from './entity/multa.entity'; import { Multa } from './entity/multa.entity';
import { Operador } from '../operador/entity/operador.entity'; import { Operador } from '../operador/entity/operador.entity';
@ -92,37 +98,41 @@ export class MultaService {
findAll( findAll(
operador: Operador, operador: Operador,
filtros: { filtros: {
pagina: string;
nombre?: string; nombre?: string;
pagina?: string;
usuario?: string; usuario?: string;
}, },
): Promise<[Multa[], number]> { ): Promise<FullInformacionMultaView[] | [Multa[], number]> {
const busqueda: FindOptionsWhere<FullInformacionMultaView> = {}; const busqueda: FindOptionsWhere<FullInformacionMultaView> = {
id_institucion: operador.institucion.id_institucion,
};
const options: FindManyOptions<FullInformacionMultaView> = {
order: {
institucion: 'ASC',
activo: 'DESC',
fecha_fin: 'ASC',
usuario: 'ASC',
},
};
if (filtros.nombre) busqueda.nombre = Like(`%${filtros.nombre}%`); if (filtros.nombre) busqueda.nombre = Like(`%${filtros.nombre}%`);
if (filtros.usuario) busqueda.usuario = Like(`%${filtros.usuario}%`); if (filtros.usuario) busqueda.usuario = Like(`%${filtros.usuario}%`);
if (operador) busqueda.id_institucion = operador.institucion.id_institucion; options.where = busqueda;
return this.fullInformacionMultaView if (filtros.pagina) {
.findAndCount({ options.skip = (parseInt(filtros.pagina) - 1) * 25;
where: busqueda, options.take = 25;
order: { return this.fullInformacionMultaView
institucion: 'ASC', .findAndCount(options)
activo: 'DESC', .then((infoMultas) => {
fecha_fin: 'ASC', const multas: Multa[] = [];
usuario: 'ASC',
},
skip: (parseInt(filtros.pagina) - 1) * 25,
take: 25,
})
.then((infoMultas) => {
const multas: Multa[] = [];
for (let i = 0; i < infoMultas[0].length; i++) for (let i = 0; i < infoMultas[0].length; i++)
multas.push( multas.push(
this.repository.create(this.fullViewToMulta(infoMultas[0][i])), this.repository.create(this.fullViewToMulta(infoMultas[0][i])),
); );
return [multas, infoMultas[1]]; return [multas, infoMultas[1]];
}); });
} else return this.fullInformacionMultaView.find(options);
} }
findAllActivasExpiradas(): Promise<Multa[]> { findAllActivasExpiradas(): Promise<Multa[]> {