Skip to content
Snippets Groups Projects
Commit 35a546ef authored by Rinaldy Adin's avatar Rinaldy Adin
Browse files

feat: dashbaord mahasiswa

parent dfad3d89
Branches
1 merge request!60feat: dashbaord mahasiswa
...@@ -14,6 +14,7 @@ import { RolesGuard } from "src/middlewares/roles.guard"; ...@@ -14,6 +14,7 @@ import { RolesGuard } from "src/middlewares/roles.guard";
import { import {
DashboardDto, DashboardDto,
GetDashboardDosbimQueryDto, GetDashboardDosbimQueryDto,
GetDashboardMahasiswaRespDto,
GetDashboardTimTesisReqQueryDto, GetDashboardTimTesisReqQueryDto,
GetDashboardTimTesisRespDto, GetDashboardTimTesisRespDto,
JalurStatisticDto, JalurStatisticDto,
...@@ -59,4 +60,12 @@ export class DashboardController { ...@@ -59,4 +60,12 @@ export class DashboardController {
): Promise<GetDashboardTimTesisRespDto> { ): Promise<GetDashboardTimTesisRespDto> {
return this.dashboardService.getDashboardTimTesis(query); return this.dashboardService.getDashboardTimTesis(query);
} }
@UseGuards(CustomAuthGuard, RolesGuard)
@Roles(RoleEnum.S2_MAHASISWA)
@ApiOkResponse({ type: GetDashboardMahasiswaRespDto })
@Get("/mahasiswa")
async getDashboardMahasiswa(): Promise<GetDashboardMahasiswaRespDto> {
return this.dashboardService.getDashboardMahasiswa();
}
} }
...@@ -101,3 +101,14 @@ export class GetDashboardTimTesisRespDto { ...@@ -101,3 +101,14 @@ export class GetDashboardTimTesisRespDto {
@ApiProperty({ type: GetDashboardTimTesisDataDto }) @ApiProperty({ type: GetDashboardTimTesisDataDto })
data: GetDashboardTimTesisDataDto[]; data: GetDashboardTimTesisDataDto[];
} }
export class GetDashboardMahasiswaRespDto {
@ApiProperty()
isSemproPeriod: boolean;
@ApiProperty()
isSemtesPeriod: boolean;
@ApiProperty()
isSidangPeriod: boolean;
}
...@@ -2,6 +2,7 @@ import { Module } from "@nestjs/common"; ...@@ -2,6 +2,7 @@ import { Module } from "@nestjs/common";
import { TypeOrmModule } from "@nestjs/typeorm"; import { TypeOrmModule } from "@nestjs/typeorm";
import { BimbinganModule } from "src/bimbingan/bimbingan.module"; import { BimbinganModule } from "src/bimbingan/bimbingan.module";
import { DosenBimbingan } from "src/entities/dosenBimbingan.entity"; import { DosenBimbingan } from "src/entities/dosenBimbingan.entity";
import { Konfigurasi } from "src/entities/konfigurasi.entity";
import { PendaftaranSidsem } from "src/entities/pendaftaranSidsem"; import { PendaftaranSidsem } from "src/entities/pendaftaranSidsem";
import { PendaftaranTesis } from "../entities/pendaftaranTesis.entity"; import { PendaftaranTesis } from "../entities/pendaftaranTesis.entity";
import { Pengguna } from "../entities/pengguna.entity"; import { Pengguna } from "../entities/pengguna.entity";
...@@ -15,6 +16,7 @@ import { DashboardService } from "./dashboard.service"; ...@@ -15,6 +16,7 @@ import { DashboardService } from "./dashboard.service";
Pengguna, Pengguna,
PendaftaranSidsem, PendaftaranSidsem,
DosenBimbingan, DosenBimbingan,
Konfigurasi,
]), ]),
BimbinganModule, BimbinganModule,
], ],
......
import { BadRequestException, Injectable } from "@nestjs/common"; import { BadRequestException, Injectable } from "@nestjs/common";
import { InjectRepository } from "@nestjs/typeorm"; import { InjectRepository } from "@nestjs/typeorm";
import * as dayjs from "dayjs";
import { BimbinganService } from "src/bimbingan/bimbingan.service"; import { BimbinganService } from "src/bimbingan/bimbingan.service";
import { DosenBimbingan } from "src/entities/dosenBimbingan.entity"; import { DosenBimbingan } from "src/entities/dosenBimbingan.entity";
import {
Konfigurasi,
KonfigurasiKeyEnum,
} from "src/entities/konfigurasi.entity";
import { import {
PendaftaranSidsem, PendaftaranSidsem,
SidsemStatus, SidsemStatus,
...@@ -16,6 +21,7 @@ import { Pengguna, RoleEnum } from "../entities/pengguna.entity"; ...@@ -16,6 +21,7 @@ import { Pengguna, RoleEnum } from "../entities/pengguna.entity";
import { import {
DashboardDto, DashboardDto,
DashboardTimTesisStatusEnum, DashboardTimTesisStatusEnum,
GetDashboardMahasiswaRespDto,
GetDashboardTimTesisReqQueryDto, GetDashboardTimTesisReqQueryDto,
GetDashboardTimTesisRespDto, GetDashboardTimTesisRespDto,
JalurStatisticDto, JalurStatisticDto,
...@@ -32,6 +38,8 @@ export class DashboardService { ...@@ -32,6 +38,8 @@ export class DashboardService {
private dosenBimbinganRepository: Repository<DosenBimbingan>, private dosenBimbinganRepository: Repository<DosenBimbingan>,
@InjectRepository(PendaftaranSidsem) @InjectRepository(PendaftaranSidsem)
private pendaftaranSidsemRepository: Repository<PendaftaranSidsem>, private pendaftaranSidsemRepository: Repository<PendaftaranSidsem>,
@InjectRepository(Konfigurasi)
private konfigurasiRepository: Repository<Konfigurasi>,
private bimbinganService: BimbinganService, private bimbinganService: BimbinganService,
) {} ) {}
...@@ -300,4 +308,54 @@ export class DashboardService { ...@@ -300,4 +308,54 @@ export class DashboardService {
})), })),
}; };
} }
async getDashboardMahasiswa(): Promise<GetDashboardMahasiswaRespDto> {
const [
awalSempro,
akhirSempro,
awalSemtes,
akhirSemtes,
awalSidang,
akhirSidang,
] = await Promise.all([
this.konfigurasiRepository.findOne({
where: { key: KonfigurasiKeyEnum.AWAL_SEMPRO },
}),
this.konfigurasiRepository.findOne({
where: { key: KonfigurasiKeyEnum.AKHIR_SEMPRO },
}),
this.konfigurasiRepository.findOne({
where: { key: KonfigurasiKeyEnum.AWAL_SEM_TESIS },
}),
this.konfigurasiRepository.findOne({
where: { key: KonfigurasiKeyEnum.AKHIR_SEM_TESIS },
}),
this.konfigurasiRepository.findOne({
where: { key: KonfigurasiKeyEnum.AWAL_SIDANG },
}),
this.konfigurasiRepository.findOne({
where: { key: KonfigurasiKeyEnum.AKHIR_SIDANG },
}),
]);
const isSemproPeriod =
awalSempro &&
akhirSempro &&
dayjs(awalSempro.value, "YYYY-mm-dd").startOf("day").isBefore(dayjs()) &&
dayjs(akhirSempro.value, "YYYY-mm-dd").endOf("day").isAfter(dayjs());
const isSemtesPeriod =
awalSemtes &&
akhirSemtes &&
dayjs(awalSemtes.value, "YYYY-mm-dd").startOf("day").isBefore(dayjs()) &&
dayjs(akhirSemtes.value, "YYYY-mm-dd").endOf("day").isAfter(dayjs());
const isSidangPeriod =
awalSidang &&
akhirSidang &&
dayjs(awalSidang.value, "YYYY-mm-dd").startOf("day").isBefore(dayjs()) &&
dayjs(akhirSidang.value, "YYYY-mm-dd").endOf("day").isAfter(dayjs());
return { isSemproPeriod, isSemtesPeriod, isSidangPeriod };
}
} }
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