new ep api to assign and cancel table

This commit is contained in:
2026-01-28 12:51:55 -06:00
parent d322b39aeb
commit 630040857a
8 changed files with 69 additions and 12 deletions
+10 -2
View File
@@ -15,8 +15,8 @@ export class BitacoraMesaController {
constructor(private readonly bitacoraMesaService: BitacoraMesaService) {}
@Post()
create(@Body() createBitacoraMesaDto: CreateBitacoraMesaDto) {
return this.bitacoraMesaService.create(createBitacoraMesaDto);
assignment(@Body() createBitacoraMesaDto: CreateBitacoraMesaDto) {
return this.bitacoraMesaService.assignment(createBitacoraMesaDto);
}
@Get()
@@ -33,4 +33,12 @@ export class BitacoraMesaController {
findByCuenta(@Param('id_cuenta') id_cuenta: string) {
return this.bitacoraMesaService.findByCuenta(+id_cuenta);
}
@Patch('cancelar/:id')
cancelationByMachine(
@Param('id') id: number,
@Body('tiempo_asignado') tiempo_asignado: number,
) {
return this.bitacoraMesaService.cancelation(id, tiempo_asignado);
}
}
+31 -2
View File
@@ -10,8 +10,16 @@ export class BitacoraMesaService {
@InjectRepository(BitacoraMesa)
private readonly bitacoraMesaRepository: Repository<BitacoraMesa>,
) {}
create(createBitacoraMesaDto: CreateBitacoraMesaDto) {
return 'This action adds a new bitacoraMesa';
async assignment(dto: CreateBitacoraMesaDto) {
const bitacora = this.bitacoraMesaRepository.create({
tiempo_entrada: new Date(),
tiempo_asignado: dto.tiempo_asignado,
mesa: { id_mesa: dto.id_mesa },
alumno_inscrito: { id_alumno_inscrito: dto.id_alumno_inscrito },
});
return this.bitacoraMesaRepository.save(bitacora);
}
findAll() {
@@ -33,6 +41,11 @@ export class BitacoraMesaService {
.leftJoinAndSelect('alumno.carrera', 'carrera')
.leftJoinAndSelect('bitacora.mesa', 'mesa')
.where('alumno.id_cuenta = :id_cuenta', { id_cuenta })
.andWhere(
`TIMESTAMPDIFF(SECOND,NOW(),DATE_ADD(bitacora.tiempo_entrada, INTERVAL bitacora.tiempo_asignado MINUTE)) > 0`,
)
.orderBy('bitacora.tiempo_entrada', 'DESC')
.getOne();
@@ -42,4 +55,20 @@ export class BitacoraMesaService {
return student;
}
async cancelation(id_mesa: number, nuevoTiempo: number) {
const bitacora = await this.bitacoraMesaRepository.findOne({
where: { mesa:{id_mesa} },
});
if (!bitacora) {
throw new NotFoundException('alumno sin mesa asignada');
}
bitacora.tiempo_asignado -= nuevoTiempo;
await this.bitacoraMesaRepository.save(bitacora);
return { message: 'Tiempo cancelado' };
}
}
@@ -1 +1,18 @@
export class CreateBitacoraMesaDto {}
import { IsInt, IsPositive, IsDateString } from 'class-validator';
export class CreateBitacoraMesaDto {
@IsInt()
@IsPositive()
tiempo_asignado: number;
@IsDateString()
tiempo_entrada: string;
@IsInt()
@IsPositive()
id_mesa: number;
@IsInt()
@IsPositive()
id_alumno_inscrito: number;
}