Skip to content
Snippets Groups Projects
Commit 40250a24 authored by Chiquita Ahsanunnisa's avatar Chiquita Ahsanunnisa
Browse files

refactor: konfigurasi

parent 15ffc4f3
2 merge requests!58final release,!51task/massive refactor
...@@ -19,6 +19,8 @@ import { BerkasBimbingan } from "./entities/berkasBimbingan.entity"; ...@@ -19,6 +19,8 @@ import { BerkasBimbingan } from "./entities/berkasBimbingan.entity";
import { PendaftaranSidsem } from "./entities/pendaftaranSidsem"; import { PendaftaranSidsem } from "./entities/pendaftaranSidsem";
import { DosenBimbinganModule } from "./dosen-bimbingan/dosen-bimbingan.module"; import { DosenBimbinganModule } from "./dosen-bimbingan/dosen-bimbingan.module";
import { PenggunaModule } from "./pengguna/pengguna.module"; import { PenggunaModule } from "./pengguna/pengguna.module";
import { KonfigurasiModule } from "./konfigurasi/konfigurasi.module";
import { Konfigurasi } from "./entities/konfigurasi.entity";
@Module({ @Module({
imports: [ imports: [
...@@ -38,6 +40,7 @@ import { PenggunaModule } from "./pengguna/pengguna.module"; ...@@ -38,6 +40,7 @@ import { PenggunaModule } from "./pengguna/pengguna.module";
PendaftaranSidsem, PendaftaranSidsem,
Topik, Topik,
DosenBimbingan, DosenBimbingan,
Konfigurasi,
PendaftaranTesis, PendaftaranTesis,
PengujiSidsem, PengujiSidsem,
], ],
...@@ -50,6 +53,7 @@ import { PenggunaModule } from "./pengguna/pengguna.module"; ...@@ -50,6 +53,7 @@ import { PenggunaModule } from "./pengguna/pengguna.module";
BimbinganModule, BimbinganModule,
DosenBimbinganModule, DosenBimbinganModule,
PenggunaModule, PenggunaModule,
KonfigurasiModule,
], ],
controllers: [AppController], controllers: [AppController],
providers: [AppService], providers: [AppService],
......
import { ApiProperty } from "@nestjs/swagger";
import { IsEnum, IsString } from "class-validator";
import { Column, Entity, PrimaryColumn } from "typeorm";
export enum KonfigurasiKeyEnum {
AWAL_PENDAFTARAN = "AWAL_PENDAFTARAN",
AKHIR_PENDAFTARAN = "AKHIR_PENDAFTARAN",
AWAL_SEMPRO = "AWAL_SEMPRO",
AKHIR_SEMPRO = "AKHIR_SEMPRO",
AWAL_SEM_TESIS = "AWAL_SEM_TESIS",
AKHIR_SEM_TESIS = "AKHIR_SEM_TESIS",
AWAL_SIDANG = "AWAL_SIDANG",
AKHIR_SIDANG = "AKHIR_SIDANG",
}
@Entity()
export class Konfigurasi {
@ApiProperty({ enum: KonfigurasiKeyEnum })
@IsEnum(KonfigurasiKeyEnum)
@PrimaryColumn({ type: "enum", enum: KonfigurasiKeyEnum })
key: KonfigurasiKeyEnum;
@ApiProperty()
@IsString()
@Column({ type: "text" })
value: string;
}
import { Body, Controller, Get, Put, UseGuards } from "@nestjs/common";
import { KonfigurasiService } from "./konfigurasi.service";
import { KonfigurasiArrDto, UpdateKonfigurasiResDto } from "./konfigurasi.dto";
import { CustomAuthGuard } from "src/middlewares/custom-auth.guard";
import { RolesGuard } from "src/middlewares/roles.guard";
import { RoleEnum } from "src/entities/pengguna.entity";
import { Roles } from "src/middlewares/roles.decorator";
import {
ApiBearerAuth,
ApiCookieAuth,
ApiOkResponse,
ApiTags,
} from "@nestjs/swagger";
@ApiTags("Konfigurasi")
@ApiCookieAuth()
@ApiBearerAuth()
@Controller("konfigurasi")
@UseGuards(CustomAuthGuard, RolesGuard)
@Roles(RoleEnum.ADMIN, RoleEnum.S2_TIM_TESIS)
export class KonfigurasiController {
constructor(private readonly konfigurasiService: KonfigurasiService) {}
@ApiOkResponse({ type: UpdateKonfigurasiResDto })
@Put()
async updateKonfigurasi(
@Body() data: KonfigurasiArrDto,
): Promise<UpdateKonfigurasiResDto> {
return await this.konfigurasiService.updateKonfigurasi(data);
}
@ApiOkResponse({ type: KonfigurasiArrDto })
@Get()
async getKonfigurasi(): Promise<KonfigurasiArrDto> {
return this.konfigurasiService.getKonfigurasi();
}
}
import { ApiProperty } from "@nestjs/swagger";
import { Type } from "class-transformer";
import { ValidateNested } from "class-validator";
import {
Konfigurasi,
KonfigurasiKeyEnum,
} from "src/entities/konfigurasi.entity";
export class KonfigurasiArrDto {
@ApiProperty({ type: [Konfigurasi] })
@ValidateNested({ each: true })
@Type(() => Konfigurasi)
data: Konfigurasi[];
}
export class UpdateKonfigurasiResDto {
@ApiProperty({ enum: KonfigurasiKeyEnum, isArray: true })
keys: KonfigurasiKeyEnum[];
}
import { Module } from "@nestjs/common";
import { KonfigurasiController } from "./konfigurasi.controller";
import { KonfigurasiService } from "./konfigurasi.service";
import { TypeOrmModule } from "@nestjs/typeorm";
import { Konfigurasi } from "src/entities/konfigurasi.entity";
@Module({
imports: [TypeOrmModule.forFeature([Konfigurasi])],
controllers: [KonfigurasiController],
providers: [KonfigurasiService],
exports: [KonfigurasiService],
})
export class KonfigurasiModule {}
import { Injectable } from "@nestjs/common";
import { InjectRepository } from "@nestjs/typeorm";
import {
Konfigurasi,
KonfigurasiKeyEnum,
} from "src/entities/konfigurasi.entity";
import { Repository } from "typeorm";
import { KonfigurasiArrDto, UpdateKonfigurasiResDto } from "./konfigurasi.dto";
@Injectable()
export class KonfigurasiService {
constructor(
@InjectRepository(Konfigurasi)
private konfigurasiRepository: Repository<Konfigurasi>,
) {}
async updateKonfigurasi({
data,
}: KonfigurasiArrDto): Promise<UpdateKonfigurasiResDto> {
await this.konfigurasiRepository.upsert(data, ["key"]);
const res = {
keys: data.map((d) => d.key),
};
return res;
}
async getKonfigurasi(): Promise<KonfigurasiArrDto> {
const data = await this.konfigurasiRepository.find();
return { data };
}
async getKonfigurasiByKey(
key: KonfigurasiKeyEnum,
): Promise<string | undefined> {
const data = await this.konfigurasiRepository.findOne({
where: {
key,
},
});
return data?.value;
}
}
...@@ -25,6 +25,7 @@ async function bootstrap() { ...@@ -25,6 +25,7 @@ async function bootstrap() {
.addTag("Bimbingan") .addTag("Bimbingan")
.addTag("Dashboard") .addTag("Dashboard")
.addTag("Dosen Bimbingan") .addTag("Dosen Bimbingan")
.addTag("Konfigurasi")
.addTag("Registrasi Tesis") .addTag("Registrasi Tesis")
.addCookieAuth(process.env.COOKIE_NAME) .addCookieAuth(process.env.COOKIE_NAME)
.addBearerAuth() .addBearerAuth()
......
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