From 472bfebb7a215245263f0fda3f614a96aa66d637 Mon Sep 17 00:00:00 2001 From: IO <320154041@pcpuma.acatlan.unam.mx> Date: Mon, 23 Feb 2026 18:05:09 -0600 Subject: [PATCH] fixed ep mesa --- src/alumno/student.controller.ts | 4 ++-- src/mesa/mesa.service.ts | 35 ++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/alumno/student.controller.ts b/src/alumno/student.controller.ts index 3db9341..d0354be 100644 --- a/src/alumno/student.controller.ts +++ b/src/alumno/student.controller.ts @@ -21,13 +21,13 @@ export class AlumnoController { return this.alumnoService.create(createStudentDto); } - //@UseGuards(JwtAuthGuard) + @UseGuards(JwtAuthGuard) @Get(':id') findOneWhitSancion(@Param('id') id: number) { return this.alumnoService.findOneWhitSancion(+id); } - //@UseGuards(JwtAuthGuard) + @UseGuards(JwtAuthGuard) @Get('sancion/:id') findOne(@Param('id') id: number) { return this.alumnoService.findOne(+id); diff --git a/src/mesa/mesa.service.ts b/src/mesa/mesa.service.ts index c089e2b..03b63b7 100644 --- a/src/mesa/mesa.service.ts +++ b/src/mesa/mesa.service.ts @@ -38,15 +38,42 @@ export class MesaService { }); } - - async findAll(): Promise { return await this.mesaRepository.find(); } - async findAllActivo(): Promise { - return await this.mesaRepository.find({ where: { activo: true } }); + const mesas = await this.mesaRepository + .createQueryBuilder('mesa') + + .andWhere('mesa.activo = true') + + .andWhere((qb) => { + const subQuery = qb + .subQuery() + .select('bitacora_mesa.id_mesa') + .from('bitacora_mesa', 'bitacora_mesa') + .where( + `TIMESTAMPDIFF( + SECOND, + NOW(), + DATE_ADD(bitacora_mesa.tiempo_entrada, INTERVAL bitacora_mesa.tiempo_asignado MINUTE) + ) > 0`, + ) + .getQuery(); + + return `mesa.id_mesa NOT IN ${subQuery}`; + }) + + .orderBy('mesa.id_mesa', 'ASC') + + .getMany(); + + if (!mesas.length) { + throw new NotFoundException('No usable table found'); + } + + return mesas; } async updateActivo(id: number, updateMesaDto: UpdateMesaDto) {