diff --git a/src/dashboard/dashboard.controller.ts b/src/dashboard/dashboard.controller.ts index c4fbd9118cb9b887137252276ef18efded99a4fd..e8ba12c0bcc39b6dcc96a9b221475b502cc3a5d2 100644 --- a/src/dashboard/dashboard.controller.ts +++ b/src/dashboard/dashboard.controller.ts @@ -7,13 +7,17 @@ import { Roles } from "src/middlewares/roles.decorator"; @Controller('dashboard') -@UseGuards(CustomAuthGuard, RolesGuard) export class DashboardController { constructor(private readonly dashboardService: DashboardService) {} + @UseGuards(CustomAuthGuard, RolesGuard) @Roles(RoleEnum.S2_PEMBIMBING, RoleEnum.ADMIN, RoleEnum.S2_TIM_TESIS) @Get(':dosenId') async findByPenerimaId(@Param('dosenId') penerimaId: string) { return this.dashboardService.findByPenerimaId(penerimaId); } + @Get(':dosenId/statistics') + async getStatisticsByJalurPilihan(@Param('dosenId') penerimaId: string) { + return this.dashboardService.getStatisticsByJalurPilihan(penerimaId); + } } \ No newline at end of file diff --git a/src/dashboard/dashboard.service.ts b/src/dashboard/dashboard.service.ts index c8275f692bc3e887ae1bace797672e8d740c9e09..7ef693ab03fd88d2616aff8876d55f111bc7bf81 100644 --- a/src/dashboard/dashboard.service.ts +++ b/src/dashboard/dashboard.service.ts @@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { PendaftaranTesis } from '../entities/pendaftaranTesis.entity'; +import { JalurEnum } from '../entities/pendaftaranTesis.entity'; import { Pengguna } from '../entities/pengguna.entity'; import { Topik } from '../entities/topik.entity'; @@ -21,14 +22,26 @@ export class DashboardService { } async findByPenerimaId(penerimaId: string): Promise<PendaftaranTesis[]> { - console.log('penerimaId:', penerimaId); const penerima = await this.penggunaRepository.findOne({ where: { id: penerimaId } }); - console.log('penerima:', penerima); if (!penerima) { return []; } const pendaftaranTesis = await this.pendaftaranTesisRepository.find({ where: { penerima }, relations: ["mahasiswa", "topik"] }); - console.log('pendaftaranTesis:', pendaftaranTesis); return pendaftaranTesis; } + + async getStatisticsByJalurPilihan(penerimaId: string): Promise<{ jalurPilihan: JalurEnum; count: number }[]> { + const penerima = await this.penggunaRepository.findOne({ where: { id: penerimaId } }); + if (!penerima) { + return []; + } + const statistics = await this.pendaftaranTesisRepository + .createQueryBuilder('pendaftaranTesis') + .select('pendaftaranTesis.jalurPilihan', 'jalurPilihan') + .addSelect('COUNT(*)', 'count') + .where('pendaftaranTesis.penerima = :penerima', { penerima: penerima.id }) + .groupBy('pendaftaranTesis.jalurPilihan') + .getRawMany(); + return statistics; + } } \ No newline at end of file