added Lino

This commit is contained in:
2026-02-10 13:26:16 -06:00
4 changed files with 66 additions and 10 deletions
@@ -3,6 +3,8 @@ import { CreateBitacoraMesaDto } from './dto/create-bitacora_mesa.dto';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { BitacoraMesa } from './entities/bitacora_mesa.entity'; import { BitacoraMesa } from './entities/bitacora_mesa.entity';
import { Repository } from 'typeorm'; import { Repository } from 'typeorm';
import { BadRequestException } from '@nestjs/common';
@Injectable() @Injectable()
export class BitacoraMesaService { export class BitacoraMesaService {
@@ -12,6 +14,29 @@ export class BitacoraMesaService {
) {} ) {}
async assignment(dto: CreateBitacoraMesaDto) { async assignment(dto: CreateBitacoraMesaDto) {
// 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({ const bitacora = this.bitacoraMesaRepository.create({
tiempo_entrada: new Date(), tiempo_entrada: new Date(),
tiempo_asignado: dto.tiempo_asignado, tiempo_asignado: dto.tiempo_asignado,
@@ -19,6 +19,7 @@ export class BitacoraMesa {
@Column({ name: 'tiempo_entrada', type: 'datetime' }) @Column({ name: 'tiempo_entrada', type: 'datetime' })
tiempo_entrada: Date; tiempo_entrada: Date;
@ManyToOne(() => Mesa) @ManyToOne(() => Mesa)
@JoinColumn({ name: 'id_mesa' }) @JoinColumn({ name: 'id_mesa' })
mesa: Mesa; mesa: Mesa;
+30
View File
@@ -11,10 +11,40 @@ export class MesaService {
private readonly mesaRepository: Repository<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[]> { async findAll(): Promise<Mesa[]> {
return await this.mesaRepository.find(); return await this.mesaRepository.find();
} }
async findAllActivo(): Promise<Mesa[]> { async findAllActivo(): Promise<Mesa[]> {
return await this.mesaRepository.find({ where: { activo: true } }); return await this.mesaRepository.find({ where: { activo: true } });
} }