added Lino

This commit is contained in:
2026-02-10 13:26:16 -06:00
4 changed files with 66 additions and 10 deletions
+33 -8
View File
@@ -3,6 +3,8 @@ import { CreateBitacoraMesaDto } from './dto/create-bitacora_mesa.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { BitacoraMesa } from './entities/bitacora_mesa.entity';
import { Repository } from 'typeorm';
import { BadRequestException } from '@nestjs/common';
@Injectable()
export class BitacoraMesaService {
@@ -11,17 +13,40 @@ export class BitacoraMesaService {
private readonly bitacoraMesaRepository: Repository<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 },
});
async assignment(dto: CreateBitacoraMesaDto) {
return this.bitacoraMesaRepository.save(bitacora);
// VALIDAR: el alumno ya tiene una mesa activa
const alumnoConMesa = await this.bitacoraMesaRepository
.createQueryBuilder('bitacora')
.where('bitacora.id_alumno_inscrito = :id_alumno_inscrito', {
id_alumno_inscrito: dto.id_alumno_inscrito,
})
.andWhere(
`TIMESTAMPDIFF(
SECOND,
NOW(),
DATE_ADD(bitacora.tiempo_entrada, INTERVAL bitacora.tiempo_asignado MINUTE)
) > 0`,
)
.getOne();
if (alumnoConMesa) {
throw new BadRequestException(
'El alumno ya tiene una mesa asignada',
);
}
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() {
return this.bitacoraMesaRepository.find({
relations: ['mesa', 'alumno_inscrito'],
@@ -19,6 +19,7 @@ export class BitacoraMesa {
@Column({ name: 'tiempo_entrada', type: 'datetime' })
tiempo_entrada: Date;
@ManyToOne(() => Mesa)
@JoinColumn({ name: 'id_mesa' })
mesa: Mesa;
+1 -1
View File
@@ -15,7 +15,7 @@ export class MesaController {
async findAllActivo() {
return this.mesaService.findAllActivo();
}
@Patch(':id')
async updateActivo(
@Param('id') id: number,
+31 -1
View File
@@ -9,12 +9,42 @@ export class MesaService {
constructor(
@InjectRepository(Mesa)
private readonly mesaRepository: Repository<Mesa>,
) {}
) { }
async asignarMesa(idUsuario: number, idMesa: number) {
const yaTieneMesa = await this.mesaRepository.findOne({
where: { id_mesa: idMesa }
});
if (yaTieneMesa) {
throw new BadRequestException('El usuario ya tiene una mesa asignada');
}
const mesa = await this.mesaRepository.findOne({
where: { id_mesa: idMesa }
});
if (!mesa) {
throw new NotFoundException('Mesa no existe');
}
mesa.activo = false;
await this.mesaRepository.save(mesa);
return await this.mesaRepository.save({
id_usuario: idUsuario,
id_mesa: idMesa,
});
}
async findAll(): Promise<Mesa[]> {
return await this.mesaRepository.find();
}
async findAllActivo(): Promise<Mesa[]> {
return await this.mesaRepository.find({ where: { activo: true } });
}