diff --git a/src/area_ubicacion/area_ubicacion.service.ts b/src/area_ubicacion/area_ubicacion.service.ts index d68b53b..52de62c 100644 --- a/src/area_ubicacion/area_ubicacion.service.ts +++ b/src/area_ubicacion/area_ubicacion.service.ts @@ -11,7 +11,7 @@ export class AreaUbicacionService { ) {} findAll() { - return this.areaUbicacionRepository.find(); + return this.areaUbicacionRepository.find({where:{extra:'0'}}); } findOne(id_area_ubicacion: number) { diff --git a/src/bitacora_mesa/bitacora_mesa.controller.ts b/src/bitacora_mesa/bitacora_mesa.controller.ts index 57852a5..e730b32 100644 --- a/src/bitacora_mesa/bitacora_mesa.controller.ts +++ b/src/bitacora_mesa/bitacora_mesa.controller.ts @@ -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); + } } diff --git a/src/bitacora_mesa/bitacora_mesa.service.ts b/src/bitacora_mesa/bitacora_mesa.service.ts index 9f4809e..941bd0c 100644 --- a/src/bitacora_mesa/bitacora_mesa.service.ts +++ b/src/bitacora_mesa/bitacora_mesa.service.ts @@ -10,8 +10,16 @@ export class BitacoraMesaService { @InjectRepository(BitacoraMesa) private readonly bitacoraMesaRepository: Repository, ) {} - 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' }; + } } diff --git a/src/bitacora_mesa/dto/create-bitacora_mesa.dto.ts b/src/bitacora_mesa/dto/create-bitacora_mesa.dto.ts index ad40760..c64abfc 100644 --- a/src/bitacora_mesa/dto/create-bitacora_mesa.dto.ts +++ b/src/bitacora_mesa/dto/create-bitacora_mesa.dto.ts @@ -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; +} \ No newline at end of file diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index 3b59cfb..35d4b16 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -17,9 +17,12 @@ export class EquipoService { ) {} findAll() { - return this.equipoRepository.find({ - relations: ['areaUbicacion', 'plataforma'], - }); + return this.equipoRepository + .createQueryBuilder('equipo') + .innerJoinAndSelect('equipo.areaUbicacion', 'area') + .innerJoinAndSelect('equipo.plataforma', 'plataforma') + .where('area.extra = :extra', { extra: '0' }) + .getMany(); } findActive() { diff --git a/src/mesa/entities/mesa.entity.ts b/src/mesa/entities/mesa.entity.ts index b5499ea..e5f6a29 100644 --- a/src/mesa/entities/mesa.entity.ts +++ b/src/mesa/entities/mesa.entity.ts @@ -4,7 +4,7 @@ import { Entity, PrimaryColumn, Column, OneToMany } from 'typeorm'; @Entity({ name: 'mesa' }) export class Mesa { @PrimaryColumn({ name: 'id_mesa', type: 'int' }) - idMesa: number; + id_mesa: number; @Column({ name: 'activo', type: 'tinyint', default: 1 }) activo: boolean; diff --git a/src/mesa/mesa.service.ts b/src/mesa/mesa.service.ts index 72e2003..fa15f7c 100644 --- a/src/mesa/mesa.service.ts +++ b/src/mesa/mesa.service.ts @@ -20,7 +20,7 @@ export class MesaService { } async updateActivo(id: number, updateMesaDto: UpdateMesaDto) { - const mesa = await this.mesaRepository.findOne({ where: { idMesa: id } }); + const mesa = await this.mesaRepository.findOne({ where: { id_mesa: id } }); if (!mesa) { throw new NotFoundException(`La mesa no fue encontrada`); } diff --git a/src/programa/programa.service.ts b/src/programa/programa.service.ts index 9f5b083..922b01e 100644 --- a/src/programa/programa.service.ts +++ b/src/programa/programa.service.ts @@ -13,7 +13,7 @@ export class ProgramaService { ){} findAll() { - return this.programaRepository.find(); + return this.programaRepository.find({order:{programa:'ASC'}}); } findOne(id_programa: number) {