From 5b5d552b0c3c8f05e91191b61beb609cfa835dd6 Mon Sep 17 00:00:00 2001 From: Tyrannusss Date: Thu, 19 Mar 2026 18:33:02 -0600 Subject: [PATCH] se agrego un endponit para buscar inscritos por un rango --- .../alumno_inscrito.controller.ts | 10 ++++- .../alumno_inscrito.service.ts | 44 ++++++++++++++++++- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/alumno_inscrito/alumno_inscrito.controller.ts b/src/alumno_inscrito/alumno_inscrito.controller.ts index ea012fb..5e07a55 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, Patch, UseGuards } from '@nestjs/common'; +import { Controller, Get, Post, Body, Param, Patch, UseGuards, ParseIntPipe } from '@nestjs/common'; import { AlumnoInscritoService } from './alumno_inscrito.service'; import { CreateAlumnoInscritoDto, @@ -58,4 +58,12 @@ export class AlumnoInscritoController { ): Promise { return this.alumnoInscritoService.findById(id_cuenta); } + + @Get('inscritos/:inicio/:fin') + findAllInscritosByRango( + @Param('inicio', ParseIntPipe) inicio: number, + @Param('fin', ParseIntPipe) fin: number, + ) { + return this.alumnoInscritoService.findAllInscritosByRango(inicio, fin); + } } diff --git a/src/alumno_inscrito/alumno_inscrito.service.ts b/src/alumno_inscrito/alumno_inscrito.service.ts index 7448362..c9ab230 100644 --- a/src/alumno_inscrito/alumno_inscrito.service.ts +++ b/src/alumno_inscrito/alumno_inscrito.service.ts @@ -71,10 +71,11 @@ async findAllInscritos(idPeriodo: number) { .where('periodo.id_periodo = :idPeriodo', { idPeriodo }) .select([ 'carrera.carrera AS carrera', + 'periodo.semestre AS semestre', 'plataforma.nombre AS profesor', 'COUNT(DISTINCT CASE WHEN alumno.genero IN (\'F\', \'Femenino\') THEN alumno.id_cuenta END) AS femenino', 'COUNT(DISTINCT CASE WHEN alumno.genero IN (\'M\', \'Masculino\') THEN alumno.id_cuenta END) AS masculino', - 'COUNT(DISTINCT alumno.id_cuenta) AS total' + 'COUNT(DISTINCT alumno.id_cuenta) AS total' ]) .groupBy('carrera.carrera') .addGroupBy('plataforma.nombre') @@ -193,7 +194,7 @@ async findAllInscritos(idPeriodo: number) { } } - //Borrar + async addTimeBorrar( idCuenta: number, idPlataforma: number, @@ -230,4 +231,43 @@ async findAllInscritos(idPeriodo: number) { const create = repo.create(data); return await repo.save(create); } + + async findAllInscritosByRango( + idPeriodoInicio: number, + idPeriodoFin: number, +) { + return this.alumnoInscritoRepo + .createQueryBuilder('inscritos') + .innerJoin('inscritos.alumno', 'alumno') + .innerJoin('alumno.carrera', 'carrera') + .innerJoin('inscritos.plataforma', 'plataforma') + .innerJoin('inscritos.periodo', 'periodo') + .where('periodo.id_periodo BETWEEN :inicio AND :fin', { + inicio: idPeriodoInicio, + fin: idPeriodoFin, + }) + .select([ + 'periodo.id_periodo AS id_periodo', + 'periodo.semestre AS semestre', + 'carrera.carrera AS carrera', + 'plataforma.nombre AS profesor', + + `COUNT(DISTINCT CASE + WHEN alumno.genero IN ('F', 'Femenino') + THEN alumno.id_cuenta + END) AS femenino`, + + `COUNT(DISTINCT CASE + WHEN alumno.genero IN ('M', 'Masculino') + THEN alumno.id_cuenta + END) AS masculino`, + + 'COUNT(DISTINCT alumno.id_cuenta) AS total', + ]) + .groupBy('periodo.id_periodo') + .addGroupBy('carrera.carrera') + .addGroupBy('plataforma.nombre') + .orderBy('periodo.id_periodo', 'ASC') + .getRawMany(); +} }