diff --git a/src/bitacora_mesa/bitacora_mesa.controller.ts b/src/bitacora_mesa/bitacora_mesa.controller.ts index e730b32..e1ad2bd 100644 --- a/src/bitacora_mesa/bitacora_mesa.controller.ts +++ b/src/bitacora_mesa/bitacora_mesa.controller.ts @@ -34,6 +34,11 @@ export class BitacoraMesaController { return this.bitacoraMesaService.findByCuenta(+id_cuenta); } + @Get('/table/:id_mesa') + findByTable(@Param('id_mesa') id_mesa: number) { + return this.bitacoraMesaService.findByTable(id_mesa); + } + @Patch('cancelar/:id') cancelationByMachine( @Param('id') id: number, diff --git a/src/bitacora_mesa/bitacora_mesa.service.ts b/src/bitacora_mesa/bitacora_mesa.service.ts index ac2cba0..3b0c3f1 100644 --- a/src/bitacora_mesa/bitacora_mesa.service.ts +++ b/src/bitacora_mesa/bitacora_mesa.service.ts @@ -56,13 +56,36 @@ export class BitacoraMesaService { return student; } - async cancelation(id_bitacora_mesa: number, nuevoTiempo: number) { + async findByTable(id_mesa: number) { + const student = await this.bitacoraMesaRepository + .createQueryBuilder('bitacora') + .leftJoinAndSelect('bitacora.alumno_inscrito', 'alumnoInscrito') + .leftJoinAndSelect('alumnoInscrito.alumno', 'alumno') + .leftJoinAndSelect('alumno.carrera', 'carrera') + .leftJoinAndSelect('bitacora.mesa', 'mesa') + .where('mesa.id_mesa = :id_mesa', { id_mesa }) + + .andWhere( + `TIMESTAMPDIFF(SECOND,NOW(),DATE_ADD(bitacora.tiempo_entrada, INTERVAL bitacora.tiempo_asignado MINUTE)) > 0`, + ) + + .orderBy('bitacora.tiempo_entrada', 'DESC') + .getOne(); + + if (!student) { + throw new NotFoundException('Mesa no asignada'); + } + + return student; + } + + async cancelation(id_bitacora_mesa: number, nuevoTiempo: number) { const bitacora = await this.bitacoraMesaRepository.findOne({ where: { id_bitacora_mesa }, }); if (!bitacora) { - throw new NotFoundException('alumno sin mesa asignada'); + throw new NotFoundException('Mesa no encontrada'); } bitacora.tiempo_asignado -= nuevoTiempo;