Skip to content
Snippets Groups Projects
Commit de690dd0 authored by vanessrw's avatar vanessrw
Browse files

feat: dashboard statistics

parent da9cb157
2 merge requests!58final release,!22feat: endpoint dashboard dosbim
......@@ -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
......@@ -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
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment