From 4a70ad3aa739f776a91dd9c8881d15a5071a7062 Mon Sep 17 00:00:00 2001 From: IO420 <320154041@pcpuma.acatlan.unam.mx> Date: Mon, 12 Jan 2026 13:39:46 -0600 Subject: [PATCH] modified ranking --- src/equipo/equipo.controller.ts | 8 ++++---- src/equipo/equipo.service.ts | 29 ++++++++++++++++------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/equipo/equipo.controller.ts b/src/equipo/equipo.controller.ts index aa56e4a..4471b9f 100644 --- a/src/equipo/equipo.controller.ts +++ b/src/equipo/equipo.controller.ts @@ -358,10 +358,10 @@ export class EquipoController { } } - @UseGuards(AuthGuard('jwt')) - @Get('ranking') - async ranking() { - return this.equipoService.ranking(); + + @Get('ranking/:year') + async ranking(@Param('year') year: string) { + return this.equipoService.ranking(Number(year)); } } diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index cc0f28a..dcd6a06 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -62,7 +62,7 @@ export class EquipoService { private readonly laboratorioRepo: Repository, @InjectRepository(Proyecto) private readonly proyectoRepo: Repository, - ) { } + ) {} async deleteEquipo(inventario: string): Promise<{ message: string }> { const equipo = await this.equipoRepository.findOne({ @@ -293,12 +293,12 @@ export class EquipoService { equipo.isImpresora ? { ...datosBase, periferico: { id_periferico: equipo.id_periferico } } : { - ...datosBase, - sistemaOperativo: { - id_sistema_operativo: equipo.id_sistema_operativo, + ...datosBase, + sistemaOperativo: { + id_sistema_operativo: equipo.id_sistema_operativo, + }, + procesador: { id_procesador: equipo.id_procesador }, }, - procesador: { id_procesador: equipo.id_procesador }, - }, ); let equip = await this.equipoRepository.save(nuevoEquipo); @@ -414,7 +414,6 @@ export class EquipoService { { header: 'Observaciones', key: 'observaciones', width: 100 }, { header: 'Fecha Movimiento', key: 'fechaMovimiento', width: 70 }, { header: 'Usuario', key: 'user', width: 70 }, - ]; // ===================================== @@ -477,10 +476,7 @@ export class EquipoService { 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', ); - res.setHeader( - 'Content-Disposition', - 'attachment; filename=equipos.xlsx', - ); + res.setHeader('Content-Disposition', 'attachment; filename=equipos.xlsx'); await workbook.xlsx.write(res); res.end(); @@ -1079,7 +1075,7 @@ export class EquipoService { return res; } - async ranking() { + async ranking(year: number) { const equipos = await this.equipoRepository.find({ relations: ['mov', 'mov.user'], }); @@ -1092,7 +1088,14 @@ export class EquipoService { for (const equipo of equipos) { if (!equipo.mov || equipo.mov.length === 0) continue; - const ultimoMov = equipo.mov.sort( + const movimientosDelAnno = equipo.mov.filter((mov) => { + const fecha = new Date(mov.fechaMovimiento); + return fecha.getFullYear() === year; + }); + + if (movimientosDelAnno.length === 0) continue; + + const ultimoMov = movimientosDelAnno.sort( (a, b) => new Date(b.fechaMovimiento).getTime() - new Date(a.fechaMovimiento).getTime(),