From de690dd0406368cc933019e1586d0fba37d1d1e4 Mon Sep 17 00:00:00 2001 From: vanessrw <vanessarebecca29@gmail.com> Date: Tue, 19 Mar 2024 21:14:14 +0700 Subject: [PATCH] feat: dashboard statistics --- src/dashboard/dashboard.controller.ts | 6 +++++- src/dashboard/dashboard.service.ts | 19 ++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/dashboard/dashboard.controller.ts b/src/dashboard/dashboard.controller.ts index c4fbd91..e8ba12c 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 c8275f6..7ef693a 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 -- GitLab