diff --git a/src/reportes/participacionAlumno.service.ts b/src/reportes/participacionAlumno.service.ts index 38e6fc7..022cbc9 100644 --- a/src/reportes/participacionAlumno.service.ts +++ b/src/reportes/participacionAlumno.service.ts @@ -4,6 +4,7 @@ import { ParticipacionAlumno } from './ParticipacionAlumno.interface'; import { InjectRepository } from '@nestjs/typeorm'; import { UsuarioEntity } from '../entities/usuario.entity'; import { TipoUsuarioEntity } from '../entities/tipoUsuario.entity'; +import { Carrera } from '../entities/carreras.entity'; @Injectable() export class ParticipacionService { @@ -12,6 +13,8 @@ export class ParticipacionService { private readonly reportesRepository: Repository, @InjectRepository(TipoUsuarioEntity) private readonly tUReportesRepository: Repository, + @InjectRepository(Carrera) + private readonly carrearasReportesRepository: Repository, ) {} async getParticipacionAlumno(): Promise { @@ -32,13 +35,25 @@ export class ParticipacionService { async getTotalUsuarios(): Promise { const queryBuilder = - await this.tUReportesRepository.createQueryBuilder('tu'); // Alias for 'tipos_usuarios' - + await this.tUReportesRepository.createQueryBuilder('tu'); return (await queryBuilder .select('tu.tipo AS tipo_usuario') .addSelect('COUNT(u.id) AS total_usuarios') - .innerJoin('tu.usuarios', 'u') // Assuming 'usuarios' is the relationship property + .innerJoin('tu.usuarios', 'u') .groupBy('tu.id, tu.tipo') - .getRawMany()) as any[]; // Cast to the interface + .getRawMany()) as any[]; + } + + async getTotalAlumnos(): Promise { + const queryBuilder = + await this.carrearasReportesRepository.createQueryBuilder('c'); + + return (await queryBuilder + .select('c.nombre AS carrera') + .addSelect('COUNT(u.id) AS total_alumnos') + .innerJoin('c.usuarios', 'u') + .where('u.tipo_usuario_id = 2') + .groupBy('c.id, c.nombre') + .getRawMany()) as any[]; // Cast to } } diff --git a/src/reportes/reportes.controller.ts b/src/reportes/reportes.controller.ts index 038e637..90a9402 100644 --- a/src/reportes/reportes.controller.ts +++ b/src/reportes/reportes.controller.ts @@ -15,4 +15,9 @@ export class ReportesController { async getTotalParticipantes(): Promise { return this.participacionService.getTotalUsuarios(); } + + @Get('totalAlumnosPorCarrera') + async getTotalAlumnosPorCarrera(): Promise { + return this.participacionService.getTotalAlumnos(); + } } diff --git a/src/reportes/reportes.module.ts b/src/reportes/reportes.module.ts index b31b9ca..2d306d7 100644 --- a/src/reportes/reportes.module.ts +++ b/src/reportes/reportes.module.ts @@ -4,9 +4,12 @@ import { ParticipacionService } from './participacionAlumno.service'; import { ReportesController } from './reportes.controller'; import { UsuarioEntity } from '../entities/usuario.entity'; import { TipoUsuarioEntity } from '../entities/tipoUsuario.entity'; +import { Carrera } from '../entities/carreras.entity'; @Module({ - imports: [TypeOrmModule.forFeature([UsuarioEntity, TipoUsuarioEntity])], + imports: [ + TypeOrmModule.forFeature([UsuarioEntity, TipoUsuarioEntity, Carrera]), + ], providers: [ParticipacionService], controllers: [ReportesController], exports: [ParticipacionService],