From 6bf34c3f4f28b38d1cbb26a292a6d0984bbc9f08 Mon Sep 17 00:00:00 2001 From: IO420 <320154041@pcpuma.acatlan.unam.mx> Date: Wed, 21 Jan 2026 17:10:49 -0600 Subject: [PATCH] new Ep --- .../alumno_inscrito.controller.ts | 15 ++++- src/alumno_inscrito/alumno_inscrito.module.ts | 3 +- .../alumno_inscrito.service.ts | 55 ++++++++++++++----- .../entities/alumno_inscrito.entity.ts | 4 ++ src/app.module.ts | 2 + src/bitacora_mesa/bitacora_mesa.controller.ts | 11 ---- src/bitacora_mesa/bitacora_mesa.module.ts | 3 + src/bitacora_mesa/bitacora_mesa.service.ts | 18 +++--- .../entities/bitacora_mesa.entity.ts | 30 +++++++++- src/equipo/equipo.controller.ts | 21 +++++-- src/equipo/equipo.service.ts | 43 ++++++++++++--- src/mesa/entities/mesa.entity.ts | 6 +- 12 files changed, 161 insertions(+), 50 deletions(-) diff --git a/src/alumno_inscrito/alumno_inscrito.controller.ts b/src/alumno_inscrito/alumno_inscrito.controller.ts index 8303f24..055ce65 100644 --- a/src/alumno_inscrito/alumno_inscrito.controller.ts +++ b/src/alumno_inscrito/alumno_inscrito.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Get, Post, Body, Param } from '@nestjs/common'; +import { Controller, Get, Post, Body, Param, Patch } from '@nestjs/common'; import { AlumnoInscritoService } from './alumno_inscrito.service'; import { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto'; import { AlumnoInscrito } from './entities/alumno_inscrito.entity'; @@ -28,4 +28,17 @@ export class AlumnoInscritoController { ): Promise { return this.alumnoInscritoService.findById(id_cuenta); } +//pruebas borrar +@Patch('platica/:idCuenta/:idPeriodo/:idPlataforma') + marcarPlatica( + @Param('idCuenta') idCuenta: number, + @Param('idPeriodo') idPeriodo: number, + @Param('idPlataforma') idPlataforma: number, + ) { + return this.alumnoInscritoService.marcarPlatica( + idCuenta, + idPeriodo, + idPlataforma, + ); + } } diff --git a/src/alumno_inscrito/alumno_inscrito.module.ts b/src/alumno_inscrito/alumno_inscrito.module.ts index c987d1d..b9d1ab8 100644 --- a/src/alumno_inscrito/alumno_inscrito.module.ts +++ b/src/alumno_inscrito/alumno_inscrito.module.ts @@ -3,9 +3,10 @@ import { AlumnoInscritoService } from './alumno_inscrito.service'; import { AlumnoInscritoController } from './alumno_inscrito.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AlumnoInscrito, Plataforma } from './entities/alumno_inscrito.entity'; +import { BitacoraMesa } from 'src/bitacora_mesa/entities/bitacora_mesa.entity'; @Module({ - imports: [TypeOrmModule.forFeature([AlumnoInscrito,Plataforma])], + imports: [TypeOrmModule.forFeature([AlumnoInscrito,Plataforma,BitacoraMesa])], controllers: [AlumnoInscritoController], providers: [AlumnoInscritoService], }) diff --git a/src/alumno_inscrito/alumno_inscrito.service.ts b/src/alumno_inscrito/alumno_inscrito.service.ts index 2141af1..c3b858c 100644 --- a/src/alumno_inscrito/alumno_inscrito.service.ts +++ b/src/alumno_inscrito/alumno_inscrito.service.ts @@ -1,4 +1,8 @@ -import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; +import { + BadRequestException, + Injectable, + NotFoundException, +} from '@nestjs/common'; import { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto'; import { AlumnoInscrito, Plataforma } from './entities/alumno_inscrito.entity'; import { InjectRepository } from '@nestjs/typeorm'; @@ -9,7 +13,7 @@ export class AlumnoInscritoService { constructor( @InjectRepository(AlumnoInscrito) private readonly alumnoInscritoRepo: Repository, - @InjectRepository(Plataforma) + @InjectRepository(Plataforma) private readonly plataformaRepo: Repository, ) {} @@ -18,7 +22,7 @@ export class AlumnoInscritoService { where: { alumno: { id_cuenta: dto.id_cuenta }, periodo: { id_periodo: dto.id_periodo }, - plataforma:{id_plataforma:dto.id_plataforma} + plataforma: { id_plataforma: dto.id_plataforma }, }, }); @@ -35,24 +39,49 @@ export class AlumnoInscritoService { async findAll(): Promise { return this.alumnoInscritoRepo.find({ relations: ['alumno', 'periodo', 'plataforma'], - take:100, + take: 100, }); } - async findAllPlataforma(){ - return this.plataformaRepo.find() + async findAllPlataforma() { + return this.plataformaRepo.find(); } async findById(id_cuenta: number): Promise { + const students = await this.alumnoInscritoRepo + .createQueryBuilder('ai') + .leftJoinAndSelect('ai.alumno', 'alumno') + .leftJoinAndSelect('ai.periodo', 'periodo') + .leftJoinAndSelect('ai.plataforma', 'plataforma') + .where('alumno.id_cuenta = :id_cuenta', { id_cuenta }) + .andWhere("periodo.activo = b'1'") + .getMany(); - const student = await this.alumnoInscritoRepo.find({ - where: { alumno: { id_cuenta }, periodo: { id_periodo: 27 } }, - relations: ['alumno', 'periodo', 'plataforma'], - }); + if (students.length === 0) { + throw new NotFoundException('unregistered student'); + } - if(!student) throw new NotFoundException("unregistered student") + return students; + } - console.log(student) - return student; + async marcarPlatica( + idCuenta: number, + idPeriodo: number, + idPlataforma: number, + ) { + const result = await this.alumnoInscritoRepo + .createQueryBuilder() + .update(AlumnoInscrito) + .set({ platica: () => "b'1'" }) + .where('id_cuenta = :idCuenta', { idCuenta }) + .andWhere('id_periodo = :idPeriodo', { idPeriodo }) + .andWhere('id_plataforma = :idPlataforma', { idPlataforma }) + .execute(); + + if (result.affected === 0) { + throw new NotFoundException('Alumno inscrito no encontrado'); + } + + return { message: 'Plática marcada correctamente' }; } } diff --git a/src/alumno_inscrito/entities/alumno_inscrito.entity.ts b/src/alumno_inscrito/entities/alumno_inscrito.entity.ts index 5d40249..d04747e 100644 --- a/src/alumno_inscrito/entities/alumno_inscrito.entity.ts +++ b/src/alumno_inscrito/entities/alumno_inscrito.entity.ts @@ -1,4 +1,5 @@ import { Alumno } from 'src/alumno/entities/student.entity'; +import { BitacoraMesa } from 'src/bitacora_mesa/entities/bitacora_mesa.entity'; import { Equipo } from 'src/equipo/entities/equipo.entity'; import { Periodo } from 'src/periodo/entities/periodo.entity'; import { @@ -69,4 +70,7 @@ export class AlumnoInscrito { default: () => "b'0'", }) ad?: boolean; + + @OneToMany(() => BitacoraMesa, (bitacoraMesa) => bitacoraMesa.alumno_inscrito) + bitacoras_mesa: BitacoraMesa[]; } diff --git a/src/app.module.ts b/src/app.module.ts index d6d04f1..ca64fe3 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -38,6 +38,7 @@ import { Programa } from './programa/entities/programa.entity'; import { ProgramaEquipoModule } from './programa_equipo/programa_equipo.module'; import { ProgramaEquipo } from './programa_equipo/entities/programa_equipo.entity'; import { BitacoraMesaModule } from './bitacora_mesa/bitacora_mesa.module'; +import { BitacoraMesa } from './bitacora_mesa/entities/bitacora_mesa.entity'; @Module({ imports: [ @@ -72,6 +73,7 @@ import { BitacoraMesaModule } from './bitacora_mesa/bitacora_mesa.module'; AreaUbicacion, Programa, ProgramaEquipo, + BitacoraMesa, ], synchronize: false, //Never change to true in production! }), diff --git a/src/bitacora_mesa/bitacora_mesa.controller.ts b/src/bitacora_mesa/bitacora_mesa.controller.ts index d06d981..2ed137c 100644 --- a/src/bitacora_mesa/bitacora_mesa.controller.ts +++ b/src/bitacora_mesa/bitacora_mesa.controller.ts @@ -1,7 +1,6 @@ import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; import { BitacoraMesaService } from './bitacora_mesa.service'; import { CreateBitacoraMesaDto } from './dto/create-bitacora_mesa.dto'; -import { UpdateBitacoraMesaDto } from './dto/update-bitacora_mesa.dto'; @Controller('bitacora-mesa') export class BitacoraMesaController { @@ -21,14 +20,4 @@ export class BitacoraMesaController { findOne(@Param('id') id: string) { return this.bitacoraMesaService.findOne(+id); } - - @Patch(':id') - update(@Param('id') id: string, @Body() updateBitacoraMesaDto: UpdateBitacoraMesaDto) { - return this.bitacoraMesaService.update(+id, updateBitacoraMesaDto); - } - - @Delete(':id') - remove(@Param('id') id: string) { - return this.bitacoraMesaService.remove(+id); - } } diff --git a/src/bitacora_mesa/bitacora_mesa.module.ts b/src/bitacora_mesa/bitacora_mesa.module.ts index dee3ab3..65b4d34 100644 --- a/src/bitacora_mesa/bitacora_mesa.module.ts +++ b/src/bitacora_mesa/bitacora_mesa.module.ts @@ -1,8 +1,11 @@ import { Module } from '@nestjs/common'; import { BitacoraMesaService } from './bitacora_mesa.service'; import { BitacoraMesaController } from './bitacora_mesa.controller'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { BitacoraMesa } from './entities/bitacora_mesa.entity'; @Module({ + imports:[TypeOrmModule.forFeature([BitacoraMesa])], controllers: [BitacoraMesaController], providers: [BitacoraMesaService], }) diff --git a/src/bitacora_mesa/bitacora_mesa.service.ts b/src/bitacora_mesa/bitacora_mesa.service.ts index a95dd29..6513293 100644 --- a/src/bitacora_mesa/bitacora_mesa.service.ts +++ b/src/bitacora_mesa/bitacora_mesa.service.ts @@ -1,26 +1,24 @@ import { Injectable } from '@nestjs/common'; import { CreateBitacoraMesaDto } from './dto/create-bitacora_mesa.dto'; -import { UpdateBitacoraMesaDto } from './dto/update-bitacora_mesa.dto'; +import { InjectRepository } from '@nestjs/typeorm'; +import { BitacoraMesa } from './entities/bitacora_mesa.entity'; +import { Repository } from 'typeorm'; @Injectable() export class BitacoraMesaService { + constructor( + @InjectRepository(BitacoraMesa) + private readonly bitacoraMesaRepository: Repository, + ) {} create(createBitacoraMesaDto: CreateBitacoraMesaDto) { return 'This action adds a new bitacoraMesa'; } findAll() { - return `This action returns all bitacoraMesa`; + return this.bitacoraMesaRepository.find({relations:['mesa','alumno_inscrito'],take:100}); } findOne(id: number) { return `This action returns a #${id} bitacoraMesa`; } - - update(id: number, updateBitacoraMesaDto: UpdateBitacoraMesaDto) { - return `This action updates a #${id} bitacoraMesa`; - } - - remove(id: number) { - return `This action removes a #${id} bitacoraMesa`; - } } diff --git a/src/bitacora_mesa/entities/bitacora_mesa.entity.ts b/src/bitacora_mesa/entities/bitacora_mesa.entity.ts index f2998dd..bc50e99 100644 --- a/src/bitacora_mesa/entities/bitacora_mesa.entity.ts +++ b/src/bitacora_mesa/entities/bitacora_mesa.entity.ts @@ -1 +1,29 @@ -export class BitacoraMesa {} +import { + Entity, + PrimaryGeneratedColumn, + Column, + ManyToOne, + JoinColumn, +} from 'typeorm'; +import { Mesa } from 'src/mesa/entities/mesa.entity'; +import { AlumnoInscrito } from 'src/alumno_inscrito/entities/alumno_inscrito.entity'; + +@Entity({ name: 'bitacora_mesa' }) +export class BitacoraMesa { + @PrimaryGeneratedColumn({ name: 'id_bitacora_mesa' }) + id_bitacora_mesa: number; + + @Column({ name: 'tiempo_asignado', type: 'int' }) + tiempo_asignado: number; + + @Column({ name: 'tiempo_entrada', type: 'datetime' }) + tiempo_entrada: Date; + + @ManyToOne(() => Mesa) + @JoinColumn({ name: 'id_mesa' }) + mesa: Mesa; + + @ManyToOne(() => AlumnoInscrito) + @JoinColumn({ name: 'id_alumno_inscrito' }) + alumno_inscrito: AlumnoInscrito; +} diff --git a/src/equipo/equipo.controller.ts b/src/equipo/equipo.controller.ts index 0de9df5..b70a3ed 100644 --- a/src/equipo/equipo.controller.ts +++ b/src/equipo/equipo.controller.ts @@ -1,4 +1,12 @@ -import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { + Controller, + Get, + Post, + Body, + Patch, + Param, + Delete, +} from '@nestjs/common'; import { EquipoService } from './equipo.service'; import { Equipo } from './entities/equipo.entity'; @@ -7,13 +15,18 @@ export class EquipoController { constructor(private readonly equipoService: EquipoService) {} @Get() - findAll() { + findAll(): Promise { return this.equipoService.findAll(); } + @Get('/student/:id') + findOnlyUsable(@Param('id')id:number): Promise { + return this.equipoService.findOnlyUsable(+id); + } + @Get(':id') - findOne(@Param('id') id: number):Promise { + findOne(@Param('id') id: number): Promise { return this.equipoService.findOne(+id); } } -//IO \ No newline at end of file +//IO diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index dc32da0..021312d 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -2,22 +2,49 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Equipo } from './entities/equipo.entity'; +import { AlumnoInscritoService } from 'src/alumno_inscrito/alumno_inscrito.service'; @Injectable() export class EquipoService { - constructor(@InjectRepository(Equipo) -private readonly equipoRepository: Repository){} + constructor( + @InjectRepository(Equipo) + private readonly equipoRepository: Repository, + // private readonly alumnoInscritoService: AlumnoInscritoService, + ) {} findAll() { - return this.equipoRepository.find({relations:['areaUbicacion','plataforma']}); + return this.equipoRepository.find({ + relations: ['areaUbicacion', 'plataforma'], + }); } - async findOne(id_equipo: number):Promise { - const equipo = await this.equipoRepository.findOne({where:{id_equipo}}) - if(!equipo){ - throw new NotFoundException("not found"); + async findOne(id_equipo: number): Promise { + const equipo = await this.equipoRepository.findOne({ + where: { id_equipo }, + }); + if (!equipo) { + throw new NotFoundException('not found'); } return equipo; } + + async findOnlyUsable(id_cuenta: number): Promise { + const equipos = await this.equipoRepository + .createQueryBuilder('equipo') + .innerJoinAndSelect('equipo.plataforma', 'plataforma') + .innerJoin('plataforma.alumnos_inscritos', 'ai') + .innerJoin('ai.alumno', 'alumno') + .innerJoin('ai.periodo', 'periodo') + .where('alumno.id_cuenta = :id_cuenta', { id_cuenta }) + .andWhere("periodo.activo = b'1'") + .andWhere("equipo.activo = b'1'") + .getMany(); + + if (equipos.length === 0) { + throw new NotFoundException('No usable equipment found'); + } + + return equipos; + } } -//IO \ No newline at end of file +//IO diff --git a/src/mesa/entities/mesa.entity.ts b/src/mesa/entities/mesa.entity.ts index 6069c05..b5499ea 100644 --- a/src/mesa/entities/mesa.entity.ts +++ b/src/mesa/entities/mesa.entity.ts @@ -1,4 +1,5 @@ -import { Entity, PrimaryColumn, Column } from 'typeorm'; +import { BitacoraMesa } from 'src/bitacora_mesa/entities/bitacora_mesa.entity'; +import { Entity, PrimaryColumn, Column, OneToMany } from 'typeorm'; @Entity({ name: 'mesa' }) export class Mesa { @@ -7,4 +8,7 @@ export class Mesa { @Column({ name: 'activo', type: 'tinyint', default: 1 }) activo: boolean; + + @OneToMany(() => BitacoraMesa, (bitacoraMesa) => bitacoraMesa.mesa) + bitacoras_mesa: BitacoraMesa[]; }