From 8a82b49a5c427371d85b60a4671e2ba0d301c149 Mon Sep 17 00:00:00 2001 From: IO <320154041@pcpuma.acatlan.unam.mx> Date: Thu, 19 Feb 2026 10:49:09 -0600 Subject: [PATCH] added new ep bitacora mesa --- src/bitacora_mesa/bitacora_mesa.controller.ts | 6 ++ src/bitacora_mesa/bitacora_mesa.service.ts | 56 ++++++++++++++----- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/src/bitacora_mesa/bitacora_mesa.controller.ts b/src/bitacora_mesa/bitacora_mesa.controller.ts index 79cc6f1..ab2bc59 100644 --- a/src/bitacora_mesa/bitacora_mesa.controller.ts +++ b/src/bitacora_mesa/bitacora_mesa.controller.ts @@ -51,4 +51,10 @@ export class BitacoraMesaController { ) { return this.bitacoraMesaService.cancelation(id, tiempo_asignado); } + + @Post('mesas-por-dia') + mesasPorDia(@Body() body: { fecha: string }) { + return this.bitacoraMesaService.mesasPorFecha(body.fecha); + } + } diff --git a/src/bitacora_mesa/bitacora_mesa.service.ts b/src/bitacora_mesa/bitacora_mesa.service.ts index 892a19a..ac8477c 100644 --- a/src/bitacora_mesa/bitacora_mesa.service.ts +++ b/src/bitacora_mesa/bitacora_mesa.service.ts @@ -51,6 +51,7 @@ export class BitacoraMesaService { return this.bitacoraMesaRepository.find({ relations: ['mesa', 'alumno_inscrito'], take: 100, + order:{id_bitacora_mesa:"DESC"} }); } @@ -114,21 +115,50 @@ export class BitacoraMesaService { }, }) -} - - async cancelation(id_bitacora_mesa: number, nuevoTiempo: number) { - const bitacora = await this.bitacoraMesaRepository.findOne({ - where: { id_bitacora_mesa }, - }); - - if (!bitacora) { - throw new NotFoundException('Mesa no encontrada'); } - bitacora.tiempo_asignado -= nuevoTiempo; + async cancelation(id_bitacora_mesa: number, nuevoTiempo: number) { + const bitacora = await this.bitacoraMesaRepository.findOne({ + where: { id_bitacora_mesa }, + }); - await this.bitacoraMesaRepository.save(bitacora); + if (!bitacora) { + throw new NotFoundException('Mesa no encontrada'); + } + + bitacora.tiempo_asignado -= nuevoTiempo; + + await this.bitacoraMesaRepository.save(bitacora); + + return { message: 'Tiempo cancelado' }; + } + + async mesasPorFecha(fecha: string) { + const inicio = new Date(`${fecha}T00:00:00`); + const fin = new Date(`${fecha}T23:59:59`); + + const registros = await this.bitacoraMesaRepository + .createQueryBuilder('bitacora') + .innerJoinAndSelect('bitacora.mesa', 'mesa') + .innerJoinAndSelect('bitacora.alumno_inscrito', 'alumnoInscrito') + .innerJoinAndSelect('alumnoInscrito.alumno', 'alumno') + .where('bitacora.tiempo_entrada BETWEEN :inicio AND :fin', { + inicio, + fin, + }) + .orderBy('bitacora.tiempo_entrada', 'DESC') + .getMany(); + + return registros.map(reg => ({ + no_mesa: reg.mesa?.id_mesa, + no_cuenta: reg.alumno_inscrito?.alumno?.id_cuenta, + hora_entrada: reg.tiempo_entrada, + tiempo_asignado: reg.tiempo_asignado, + hora_salida: new Date( + new Date(reg.tiempo_entrada).getTime() + + reg.tiempo_asignado * 60000 + ), + })); + } - return { message: 'Tiempo cancelado' }; -} }