diff --git a/src/multa/dto/input/reporte.dto.ts b/src/multa/dto/input/reporte.dto.ts new file mode 100644 index 0000000..7fae938 --- /dev/null +++ b/src/multa/dto/input/reporte.dto.ts @@ -0,0 +1,13 @@ +import { IsNotEmpty, IsOptional, IsString } from 'class-validator'; + +export class ReporteDto { + @IsString() + @IsNotEmpty() + @IsOptional() + nombre?: string; + + @IsString() + @IsNotEmpty() + @IsOptional() + usuario?: string; +} diff --git a/src/multa/multa.controller.ts b/src/multa/multa.controller.ts index 2326e03..883b969 100644 --- a/src/multa/multa.controller.ts +++ b/src/multa/multa.controller.ts @@ -26,6 +26,7 @@ import { IdUsuarioPaginaDto } from '../dto/input/id-usuario-pagina.dto'; import { MultarDto } from './dto/input/multar.dto'; import { MultasDto } from './dto/input/multas.dto'; import { QuitarMultarDto } from './dto/input/quitar.dto'; +import { ReporteDto } from './dto/input/reporte.dto'; import { MessageOutputDto } from '../dto/output/message.dto'; import { MultasOutputDto } from './dto/output/multas.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); } - // @Get('reporte') - // @UseGuards(AuthGuard('jwt')) - // @ApiBearerAuth('jwt') - // reporte(@Request() req) { - // const operador: Operador = req.user.operador; + @Get('reporte') + @UseGuards(AuthGuard('jwt')) + @ApiBearerAuth('jwt') + reporte(@Request() req, @Query() query: ReporteDto) { + const operador: Operador = req.user.operador; - // this.validarUsuarioService.validarAdminOperador(operador); - // // return this.multaService.findAll(operador, query); - // } + this.validarUsuarioService.validarAdminOperador(operador); + return this.multaService.findAll(operador, query); + } } diff --git a/src/multa/multa.service.ts b/src/multa/multa.service.ts index c15c3fb..53790b8 100644 --- a/src/multa/multa.service.ts +++ b/src/multa/multa.service.ts @@ -1,7 +1,13 @@ import * as moment from 'moment'; import { ConflictException, Injectable } from '@nestjs/common'; 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 { Multa } from './entity/multa.entity'; import { Operador } from '../operador/entity/operador.entity'; @@ -92,37 +98,41 @@ export class MultaService { findAll( operador: Operador, filtros: { - pagina: string; nombre?: string; + pagina?: string; usuario?: string; }, - ): Promise<[Multa[], number]> { - const busqueda: FindOptionsWhere = {}; + ): Promise { + const busqueda: FindOptionsWhere = { + id_institucion: operador.institucion.id_institucion, + }; + const options: FindManyOptions = { + order: { + institucion: 'ASC', + activo: 'DESC', + fecha_fin: 'ASC', + usuario: 'ASC', + }, + }; if (filtros.nombre) busqueda.nombre = Like(`%${filtros.nombre}%`); if (filtros.usuario) busqueda.usuario = Like(`%${filtros.usuario}%`); - if (operador) busqueda.id_institucion = operador.institucion.id_institucion; - return this.fullInformacionMultaView - .findAndCount({ - where: busqueda, - order: { - institucion: 'ASC', - activo: 'DESC', - fecha_fin: 'ASC', - usuario: 'ASC', - }, - skip: (parseInt(filtros.pagina) - 1) * 25, - take: 25, - }) - .then((infoMultas) => { - const multas: Multa[] = []; + options.where = busqueda; + if (filtros.pagina) { + options.skip = (parseInt(filtros.pagina) - 1) * 25; + options.take = 25; + return this.fullInformacionMultaView + .findAndCount(options) + .then((infoMultas) => { + const multas: Multa[] = []; - for (let i = 0; i < infoMultas[0].length; i++) - multas.push( - this.repository.create(this.fullViewToMulta(infoMultas[0][i])), - ); - return [multas, infoMultas[1]]; - }); + for (let i = 0; i < infoMultas[0].length; i++) + multas.push( + this.repository.create(this.fullViewToMulta(infoMultas[0][i])), + ); + return [multas, infoMultas[1]]; + }); + } else return this.fullInformacionMultaView.find(options); } findAllActivasExpiradas(): Promise {