This commit is contained in:
2026-01-21 17:10:49 -06:00
parent 0571681656
commit 6bf34c3f4f
12 changed files with 161 additions and 50 deletions
@@ -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 { AlumnoInscritoService } from './alumno_inscrito.service';
import { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto'; import { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto';
import { AlumnoInscrito } from './entities/alumno_inscrito.entity'; import { AlumnoInscrito } from './entities/alumno_inscrito.entity';
@@ -28,4 +28,17 @@ export class AlumnoInscritoController {
): Promise<AlumnoInscrito[]> { ): Promise<AlumnoInscrito[]> {
return this.alumnoInscritoService.findById(id_cuenta); 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,
);
}
} }
@@ -3,9 +3,10 @@ import { AlumnoInscritoService } from './alumno_inscrito.service';
import { AlumnoInscritoController } from './alumno_inscrito.controller'; import { AlumnoInscritoController } from './alumno_inscrito.controller';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import { AlumnoInscrito, Plataforma } from './entities/alumno_inscrito.entity'; import { AlumnoInscrito, Plataforma } from './entities/alumno_inscrito.entity';
import { BitacoraMesa } from 'src/bitacora_mesa/entities/bitacora_mesa.entity';
@Module({ @Module({
imports: [TypeOrmModule.forFeature([AlumnoInscrito,Plataforma])], imports: [TypeOrmModule.forFeature([AlumnoInscrito,Plataforma,BitacoraMesa])],
controllers: [AlumnoInscritoController], controllers: [AlumnoInscritoController],
providers: [AlumnoInscritoService], providers: [AlumnoInscritoService],
}) })
+42 -13
View File
@@ -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 { CreateAlumnoInscritoDto } from './dto/create-alumno_inscrito.dto';
import { AlumnoInscrito, Plataforma } from './entities/alumno_inscrito.entity'; import { AlumnoInscrito, Plataforma } from './entities/alumno_inscrito.entity';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
@@ -9,7 +13,7 @@ export class AlumnoInscritoService {
constructor( constructor(
@InjectRepository(AlumnoInscrito) @InjectRepository(AlumnoInscrito)
private readonly alumnoInscritoRepo: Repository<AlumnoInscrito>, private readonly alumnoInscritoRepo: Repository<AlumnoInscrito>,
@InjectRepository(Plataforma) @InjectRepository(Plataforma)
private readonly plataformaRepo: Repository<Plataforma>, private readonly plataformaRepo: Repository<Plataforma>,
) {} ) {}
@@ -18,7 +22,7 @@ export class AlumnoInscritoService {
where: { where: {
alumno: { id_cuenta: dto.id_cuenta }, alumno: { id_cuenta: dto.id_cuenta },
periodo: { id_periodo: dto.id_periodo }, 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<AlumnoInscrito[]> { async findAll(): Promise<AlumnoInscrito[]> {
return this.alumnoInscritoRepo.find({ return this.alumnoInscritoRepo.find({
relations: ['alumno', 'periodo', 'plataforma'], relations: ['alumno', 'periodo', 'plataforma'],
take:100, take: 100,
}); });
} }
async findAllPlataforma(){ async findAllPlataforma() {
return this.plataformaRepo.find() return this.plataformaRepo.find();
} }
async findById(id_cuenta: number): Promise<AlumnoInscrito[]> { async findById(id_cuenta: number): Promise<AlumnoInscrito[]> {
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({ if (students.length === 0) {
where: { alumno: { id_cuenta }, periodo: { id_periodo: 27 } }, throw new NotFoundException('unregistered student');
relations: ['alumno', 'periodo', 'plataforma'], }
});
if(!student) throw new NotFoundException("unregistered student") return students;
}
console.log(student) async marcarPlatica(
return student; 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' };
} }
} }
@@ -1,4 +1,5 @@
import { Alumno } from 'src/alumno/entities/student.entity'; 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 { Equipo } from 'src/equipo/entities/equipo.entity';
import { Periodo } from 'src/periodo/entities/periodo.entity'; import { Periodo } from 'src/periodo/entities/periodo.entity';
import { import {
@@ -69,4 +70,7 @@ export class AlumnoInscrito {
default: () => "b'0'", default: () => "b'0'",
}) })
ad?: boolean; ad?: boolean;
@OneToMany(() => BitacoraMesa, (bitacoraMesa) => bitacoraMesa.alumno_inscrito)
bitacoras_mesa: BitacoraMesa[];
} }
+2
View File
@@ -38,6 +38,7 @@ import { Programa } from './programa/entities/programa.entity';
import { ProgramaEquipoModule } from './programa_equipo/programa_equipo.module'; import { ProgramaEquipoModule } from './programa_equipo/programa_equipo.module';
import { ProgramaEquipo } from './programa_equipo/entities/programa_equipo.entity'; import { ProgramaEquipo } from './programa_equipo/entities/programa_equipo.entity';
import { BitacoraMesaModule } from './bitacora_mesa/bitacora_mesa.module'; import { BitacoraMesaModule } from './bitacora_mesa/bitacora_mesa.module';
import { BitacoraMesa } from './bitacora_mesa/entities/bitacora_mesa.entity';
@Module({ @Module({
imports: [ imports: [
@@ -72,6 +73,7 @@ import { BitacoraMesaModule } from './bitacora_mesa/bitacora_mesa.module';
AreaUbicacion, AreaUbicacion,
Programa, Programa,
ProgramaEquipo, ProgramaEquipo,
BitacoraMesa,
], ],
synchronize: false, //Never change to true in production! synchronize: false, //Never change to true in production!
}), }),
@@ -1,7 +1,6 @@
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { BitacoraMesaService } from './bitacora_mesa.service'; import { BitacoraMesaService } from './bitacora_mesa.service';
import { CreateBitacoraMesaDto } from './dto/create-bitacora_mesa.dto'; import { CreateBitacoraMesaDto } from './dto/create-bitacora_mesa.dto';
import { UpdateBitacoraMesaDto } from './dto/update-bitacora_mesa.dto';
@Controller('bitacora-mesa') @Controller('bitacora-mesa')
export class BitacoraMesaController { export class BitacoraMesaController {
@@ -21,14 +20,4 @@ export class BitacoraMesaController {
findOne(@Param('id') id: string) { findOne(@Param('id') id: string) {
return this.bitacoraMesaService.findOne(+id); 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);
}
} }
@@ -1,8 +1,11 @@
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { BitacoraMesaService } from './bitacora_mesa.service'; import { BitacoraMesaService } from './bitacora_mesa.service';
import { BitacoraMesaController } from './bitacora_mesa.controller'; import { BitacoraMesaController } from './bitacora_mesa.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BitacoraMesa } from './entities/bitacora_mesa.entity';
@Module({ @Module({
imports:[TypeOrmModule.forFeature([BitacoraMesa])],
controllers: [BitacoraMesaController], controllers: [BitacoraMesaController],
providers: [BitacoraMesaService], providers: [BitacoraMesaService],
}) })
+8 -10
View File
@@ -1,26 +1,24 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { CreateBitacoraMesaDto } from './dto/create-bitacora_mesa.dto'; 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() @Injectable()
export class BitacoraMesaService { export class BitacoraMesaService {
constructor(
@InjectRepository(BitacoraMesa)
private readonly bitacoraMesaRepository: Repository<BitacoraMesa>,
) {}
create(createBitacoraMesaDto: CreateBitacoraMesaDto) { create(createBitacoraMesaDto: CreateBitacoraMesaDto) {
return 'This action adds a new bitacoraMesa'; return 'This action adds a new bitacoraMesa';
} }
findAll() { findAll() {
return `This action returns all bitacoraMesa`; return this.bitacoraMesaRepository.find({relations:['mesa','alumno_inscrito'],take:100});
} }
findOne(id: number) { findOne(id: number) {
return `This action returns a #${id} bitacoraMesa`; 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`;
}
} }
@@ -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;
}
+17 -4
View File
@@ -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 { EquipoService } from './equipo.service';
import { Equipo } from './entities/equipo.entity'; import { Equipo } from './entities/equipo.entity';
@@ -7,13 +15,18 @@ export class EquipoController {
constructor(private readonly equipoService: EquipoService) {} constructor(private readonly equipoService: EquipoService) {}
@Get() @Get()
findAll() { findAll(): Promise<Equipo[]> {
return this.equipoService.findAll(); return this.equipoService.findAll();
} }
@Get('/student/:id')
findOnlyUsable(@Param('id')id:number): Promise<Equipo[]> {
return this.equipoService.findOnlyUsable(+id);
}
@Get(':id') @Get(':id')
findOne(@Param('id') id: number):Promise<Equipo> { findOne(@Param('id') id: number): Promise<Equipo> {
return this.equipoService.findOne(+id); return this.equipoService.findOne(+id);
} }
} }
//IO //IO
+35 -8
View File
@@ -2,22 +2,49 @@ import { Injectable, NotFoundException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm'; import { Repository } from 'typeorm';
import { Equipo } from './entities/equipo.entity'; import { Equipo } from './entities/equipo.entity';
import { AlumnoInscritoService } from 'src/alumno_inscrito/alumno_inscrito.service';
@Injectable() @Injectable()
export class EquipoService { export class EquipoService {
constructor(@InjectRepository(Equipo) constructor(
private readonly equipoRepository: Repository<Equipo>){} @InjectRepository(Equipo)
private readonly equipoRepository: Repository<Equipo>,
// private readonly alumnoInscritoService: AlumnoInscritoService,
) {}
findAll() { findAll() {
return this.equipoRepository.find({relations:['areaUbicacion','plataforma']}); return this.equipoRepository.find({
relations: ['areaUbicacion', 'plataforma'],
});
} }
async findOne(id_equipo: number):Promise<Equipo> { async findOne(id_equipo: number): Promise<Equipo> {
const equipo = await this.equipoRepository.findOne({where:{id_equipo}}) const equipo = await this.equipoRepository.findOne({
if(!equipo){ where: { id_equipo },
throw new NotFoundException("not found"); });
if (!equipo) {
throw new NotFoundException('not found');
} }
return equipo; return equipo;
} }
async findOnlyUsable(id_cuenta: number): Promise<Equipo[]> {
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 //IO
+5 -1
View File
@@ -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' }) @Entity({ name: 'mesa' })
export class Mesa { export class Mesa {
@@ -7,4 +8,7 @@ export class Mesa {
@Column({ name: 'activo', type: 'tinyint', default: 1 }) @Column({ name: 'activo', type: 'tinyint', default: 1 })
activo: boolean; activo: boolean;
@OneToMany(() => BitacoraMesa, (bitacoraMesa) => bitacoraMesa.mesa)
bitacoras_mesa: BitacoraMesa[];
} }