diff --git a/src/registrasi-sidsem/registrasi-sidsem.dto.ts b/src/registrasi-sidsem/registrasi-sidsem.dto.ts index fbead66ec4da85fd3d5ff7d5b537d1a8f873c361..aacdc06d691e070ad9aef03cc3277bd036ac9b13 100644 --- a/src/registrasi-sidsem/registrasi-sidsem.dto.ts +++ b/src/registrasi-sidsem/registrasi-sidsem.dto.ts @@ -57,6 +57,11 @@ export class GetAllPengajuanSidangReqQueryDto extends SidsemViewQueryDto { @IsOptional() jenisSidang?: TipeSidsemEnum; + @ApiPropertyOptional({ enum: SidsemStatus }) + @IsEnum(SidsemStatus) + @IsOptional() + status?: SidsemStatus; + @IsOptional() @IsNumberString() @ApiPropertyOptional({ description: "default: 1" }) @@ -68,6 +73,14 @@ export class GetAllPengajuanSidangReqQueryDto extends SidsemViewQueryDto { limit?: number; } +class NameAndId { + @ApiProperty() + id: string; + + @ApiProperty() + nama: string; +} + export class GetAllPengajuanSidangItemDto { @ApiProperty({ example: "550e8400-e29b-41d4-a716-446655440000" }) idPengajuanSidsem: string; @@ -93,8 +106,8 @@ export class GetAllPengajuanSidangItemDto { @ApiProperty({ enum: SidsemStatus }) status: SidsemStatus; - @ApiProperty({ type: [String] }) - dosenPembimbing: string[]; + @ApiProperty({ type: [NameAndId] }) + dosenPembimbing: NameAndId[]; @ApiProperty({ type: [BerkasSidsem] }) berkasSidsem: BerkasSidsem[]; @@ -117,10 +130,10 @@ export class GetOnePengajuanSidangRespDto extends GetAllPengajuanSidangItemDto { judulTopik: string; @ApiProperty() deskripsiTopik: string; - @ApiProperty({ type: [String] }) - dosenPembimbing: string[]; - @ApiProperty({ type: [String] }) - dosenPenguji: string[]; + @ApiProperty({ type: [NameAndId] }) + dosenPembimbing: NameAndId[]; + @ApiProperty({ type: [NameAndId] }) + dosenPenguji: NameAndId[]; @ApiProperty() judulSidsem: string; diff --git a/src/registrasi-sidsem/registrasi-sidsem.service.ts b/src/registrasi-sidsem/registrasi-sidsem.service.ts index 1f1b73a3907008766d8dfb9f34917b29283242e0..abc6c5d3b06820a33fba4570f5cb689e8b34bed2 100644 --- a/src/registrasi-sidsem/registrasi-sidsem.service.ts +++ b/src/registrasi-sidsem/registrasi-sidsem.service.ts @@ -1,3 +1,4 @@ +import { HttpService } from "@nestjs/axios"; import { BadRequestException, ForbiddenException, @@ -6,14 +7,23 @@ import { NotFoundException, } from "@nestjs/common"; import { InjectRepository } from "@nestjs/typeorm"; +import * as dayjs from "dayjs"; +import { Request } from "express"; +import { firstValueFrom } from "rxjs"; +import { BerkasSidsem } from "src/entities/berkasSidsem.entity"; +import { KonfigurasiKeyEnum } from "src/entities/konfigurasi.entity"; import { - cmpTipeSidsem, PendaftaranSidsem, SidsemStatus, TipeSidsemEnum, + cmpTipeSidsem, } from "src/entities/pendaftaranSidsem"; +import { RegStatus } from "src/entities/pendaftaranTesis.entity"; +import { Pengguna, RoleEnum } from "src/entities/pengguna.entity"; import { PengujiSidsem } from "src/entities/pengujiSidsem.entity"; -import { DataSource, In, Repository, Brackets } from "typeorm"; +import { KonfigurasiService } from "src/konfigurasi/konfigurasi.service"; +import { RegistrasiTesisService } from "src/registrasi-tesis/registrasi-tesis.service"; +import { Brackets, DataSource, In, Repository } from "typeorm"; import { CreatePengajuanSidsemDto, GetAllPengajuanSidangItemDto, @@ -23,16 +33,6 @@ import { PengajuanSidsemIdDto, UpdateSidsemDetailDto, } from "./registrasi-sidsem.dto"; -import { RegStatus } from "src/entities/pendaftaranTesis.entity"; -import { RegistrasiTesisService } from "src/registrasi-tesis/registrasi-tesis.service"; -import { BerkasSidsem } from "src/entities/berkasSidsem.entity"; -import { Pengguna, RoleEnum } from "src/entities/pengguna.entity"; -import { KonfigurasiService } from "src/konfigurasi/konfigurasi.service"; -import { KonfigurasiKeyEnum } from "src/entities/konfigurasi.entity"; -import * as dayjs from "dayjs"; -import { HttpService } from "@nestjs/axios"; -import { Request } from "express"; -import { firstValueFrom } from "rxjs"; @Injectable() export class RegistrasiSidsemService { @@ -221,8 +221,7 @@ export class RegistrasiSidsemService { .leftJoin("pt.dosenBimbingan", "dosenBimbingan") .leftJoin("dosenBimbingan.dosen", "dosen") .leftJoin("pt.mahasiswa", "mahasiswa") - .where("mahasiswa.aktif = true") - .orderBy("ps.waktuPengiriman", "DESC"); + .where("mahasiswa.aktif = true"); if (idPembimbing) { baseQuery @@ -255,14 +254,20 @@ export class RegistrasiSidsemService { } if (query.jenisSidang) { - baseQuery.andWhere("ps.jenisSidang = :jenisSidang", { + baseQuery.andWhere("ps.tipe = :jenisSidang", { jenisSidang: query.jenisSidang, }); } + if (query.status) { + baseQuery.andWhere("ps.status = :status", { + status: query.status, + }); + } + if (query.limit) { baseQuery.take(query.limit); - baseQuery.skip((query.page - 1) * query.limit); + baseQuery.skip(((query.page ?? 1) - 1) * query.limit); } const [queryData, total] = await baseQuery.getManyAndCount(); @@ -276,9 +281,10 @@ export class RegistrasiSidsemService { jenisSidang: res.tipe, ruangan: res.ruangan, status: res.status, - dosenPembimbing: res.pendaftaranTesis.dosenBimbingan.map( - (dosen) => dosen.dosen.nama, - ), + dosenPembimbing: res.pendaftaranTesis.dosenBimbingan.map(({ dosen }) => ({ + nama: dosen.nama, + id: dosen.id, + })), berkasSidsem: res.berkasSidsem, })); @@ -339,9 +345,12 @@ export class RegistrasiSidsemService { judulSidsem: latest.judulSidsem, deskripsiSidsem: latest.deskripsiSidsem, dosenPembimbing: latest.pendaftaranTesis.dosenBimbingan.map( - ({ dosen: { nama } }) => nama, + ({ dosen: { nama, id } }) => ({ nama, id }), ), - dosenPenguji: latest.penguji.map(({ dosen: { nama } }) => nama), + dosenPenguji: latest.penguji.map(({ dosen: { nama, id } }) => ({ + nama, + id, + })), }; return data;