added new ep bitacora mesa

This commit is contained in:
2026-02-19 10:49:09 -06:00
parent 23acb847c3
commit 8a82b49a5c
2 changed files with 49 additions and 13 deletions
@@ -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);
}
}
+43 -13
View File
@@ -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' };
}
}