se agrego un endponit para buscar inscritos por un rango

This commit is contained in:
2026-03-19 18:33:02 -06:00
parent b154d1fb93
commit 5b5d552b0c
2 changed files with 51 additions and 3 deletions
@@ -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 { AlumnoInscritoService } from './alumno_inscrito.service';
import { import {
CreateAlumnoInscritoDto, CreateAlumnoInscritoDto,
@@ -58,4 +58,12 @@ export class AlumnoInscritoController {
): Promise<AlumnoInscrito[]> { ): Promise<AlumnoInscrito[]> {
return this.alumnoInscritoService.findById(id_cuenta); 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);
}
} }
+42 -2
View File
@@ -71,10 +71,11 @@ async findAllInscritos(idPeriodo: number) {
.where('periodo.id_periodo = :idPeriodo', { idPeriodo }) .where('periodo.id_periodo = :idPeriodo', { idPeriodo })
.select([ .select([
'carrera.carrera AS carrera', 'carrera.carrera AS carrera',
'periodo.semestre AS semestre',
'plataforma.nombre AS profesor', '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 (\'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 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') .groupBy('carrera.carrera')
.addGroupBy('plataforma.nombre') .addGroupBy('plataforma.nombre')
@@ -193,7 +194,7 @@ async findAllInscritos(idPeriodo: number) {
} }
} }
//Borrar
async addTimeBorrar( async addTimeBorrar(
idCuenta: number, idCuenta: number,
idPlataforma: number, idPlataforma: number,
@@ -230,4 +231,43 @@ async findAllInscritos(idPeriodo: number) {
const create = repo.create(data); const create = repo.create(data);
return await repo.save(create); 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();
}
} }