diff --git a/src/nilai/nilai.service.ts b/src/nilai/nilai.service.ts
index 81ebba4d7151fc7b42f495d542af94057fd4f66e..973251cd9ba63a7be3a5aa0ef6a04903d8f77e54 100644
--- a/src/nilai/nilai.service.ts
+++ b/src/nilai/nilai.service.ts
@@ -41,7 +41,6 @@ export class NilaiService {
     search: string,
   ) {
     const currPeriode = await this.konfServ.getPeriodeOrFail();
-    console.log(limit);
 
     const baseQuery = this.mataKuliahRepo
       .createQueryBuilder("matkul")
diff --git a/src/submisi-tugas/submisi-tugas.dto.ts b/src/submisi-tugas/submisi-tugas.dto.ts
index 96c638462944f622dcaaf16dee39078602ebf26d..86bbae65c8d1f21b2502e4679e16de8acf272ea9 100644
--- a/src/submisi-tugas/submisi-tugas.dto.ts
+++ b/src/submisi-tugas/submisi-tugas.dto.ts
@@ -34,7 +34,7 @@ export class CreateOrUpdateSubmisiTugasDto extends PickType(SubmisiTugas, [
   @Type(() => BerkasSubmisiTugasWithoutId)
   berkasSubmisiTugas: BerkasSubmisiTugasWithoutId[];
 
-  @ApiPropertyOptional()
+  @ApiPropertyOptional({ example: "550e8400-e29b-41d4-a716-446655440000" })
   @IsOptional()
   @IsUUID()
   id?: string;
@@ -85,7 +85,7 @@ class PickedSubmisiTugas extends PickType(SubmisiTugas, [
   "berkasSubmisiTugas",
 ] as const) {}
 
-class PickedSubmisiTugasExtended extends PickType(SubmisiTugas, [
+export class PickedSubmisiTugasExtended extends PickType(SubmisiTugas, [
   "id",
   "isSubmitted",
   "jawaban",
diff --git a/src/submisi-tugas/submisi-tugas.service.ts b/src/submisi-tugas/submisi-tugas.service.ts
index e949c71aae4d0576038d62bbe840ace98266f6f0..59b4be284e535ec40456da9d3531badb009ea614 100644
--- a/src/submisi-tugas/submisi-tugas.service.ts
+++ b/src/submisi-tugas/submisi-tugas.service.ts
@@ -86,12 +86,23 @@ export class SubmisiTugasService {
   ): Promise<SubmisiTugasIdDto> {
     await this.tugasService.isMahasiswaTugasOrFail(mahasiswaId, dto.tugasId);
 
-    const tugas = await this.tugasRepo.findOne({
-      where: { id: dto.tugasId, submisiTugas: { mahasiswaId } },
-      relations: {
-        submisiTugas: true,
-      },
-    });
+    // const tugas = await this.tugasRepo.findOne({
+    //   where: { id: dto.tugasId, submisiTugas: { mahasiswaId } },
+    //   relations: {
+    //     submisiTugas: true,
+    //   },
+    // });
+
+    const tugas = await this.tugasRepo
+      .createQueryBuilder("tugas")
+      .leftJoinAndSelect(
+        "tugas.submisiTugas",
+        "submisiTugas",
+        "submisiTugas.mahasiswaId = :mahasiswaId",
+        { mahasiswaId },
+      )
+      .where("tugas.id = :id", { id: dto.tugasId })
+      .getOne();
 
     const mahasiswa = await this.penggunaRepo.findOneBy({ id: mahasiswaId });
 
@@ -145,6 +156,7 @@ export class SubmisiTugasService {
 
       const data = {
         ...tugas.submisiTugas[0],
+        ...dto,
         berkasSubmisiTugas,
         mahasiswa,
         tugas: omittedTugas,
diff --git a/src/tugas/tugas.controller.ts b/src/tugas/tugas.controller.ts
index 70637ad4c7ce8f2b381c2b815609cd82c6c1aa8c..1e2b396d33bcdebaab6e7f7b79b292b9022f7224 100644
--- a/src/tugas/tugas.controller.ts
+++ b/src/tugas/tugas.controller.ts
@@ -30,9 +30,11 @@ import {
   GetTugasByKelasIdQueryDto,
   GetTugasByKelasIdRespDto,
   GetTugasByMahasiswaIdQueryDto,
+  GetDaftarTugasByMahasiswaIdRespDto,
 } from "./tugas.dto";
 import { Request } from "express";
 import { AuthDto } from "src/auth/auth.dto";
+import { PickedSubmisiTugasExtended } from "src/submisi-tugas/submisi-tugas.dto";
 
 @ApiCookieAuth()
 @ApiBearerAuth()
@@ -108,6 +110,7 @@ export class TugasController {
     summary:
       "Get a specific submisi tugas by mahasiswa ID and tugas ID. Roles: S2_MAHASISWA",
   })
+  @ApiOkResponse({ type: PickedSubmisiTugasExtended })
   @Roles(RoleEnum.S2_MAHASISWA)
   @Get("/:id/submisi-tugas")
   async getSubmisiTugasByMahasiswaAndTugasId(
@@ -125,6 +128,7 @@ export class TugasController {
   @ApiOperation({
     summary: "Get Tugas list by mahasiswa Id. Roles: S2_MAHASISWA",
   })
+  @ApiOkResponse({ type: [GetDaftarTugasByMahasiswaIdRespDto] })
   @Roles(RoleEnum.S2_MAHASISWA)
   @Get("/-/daftar-tugas")
   async getTugasByMahasiswaId(
diff --git a/src/tugas/tugas.dto.ts b/src/tugas/tugas.dto.ts
index f7f8eab5c0af6ec866eff1addea9113584714163..c91d2592fc2c201ea085e671e4d6a0575e0d34e9 100644
--- a/src/tugas/tugas.dto.ts
+++ b/src/tugas/tugas.dto.ts
@@ -133,3 +133,26 @@ export class GetTugasByKelasIdRespDto {
   @ApiProperty({ type: GetKelasRespDto })
   kelas: GetKelasRespDto;
 }
+
+export class GetDaftarTugasByMahasiswaIdRespDto {
+  @ApiProperty({ example: "IF4031" })
+  kodeMataKuliah: string;
+
+  @ApiProperty({ example: "Pengembangan Aplikasi" })
+  namaMataKuliah: string;
+
+  @ApiProperty({
+    example: "550e8400-e29b-41d4-a716-446655440000",
+    description: "tugas id",
+  })
+  id: string;
+
+  @ApiProperty()
+  judul: string;
+
+  @ApiPropertyOptional({ example: "550e8400-e29b-41d4-a716-446655440000" })
+  submisiTugasId: string;
+
+  @ApiPropertyOptional()
+  isSubmitted: boolean;
+}
diff --git a/src/tugas/tugas.service.ts b/src/tugas/tugas.service.ts
index 7a48b5323fd785cadbe7a93a8cab37a4cd02eca9..84b144eaeabc9384ac96268f656a732a7b74977c 100644
--- a/src/tugas/tugas.service.ts
+++ b/src/tugas/tugas.service.ts
@@ -9,6 +9,7 @@ import { Tugas } from "src/entities/tugas.entity";
 import { Brackets, Repository } from "typeorm";
 import {
   CreateTugasDto,
+  GetDaftarTugasByMahasiswaIdRespDto,
   GetTugasByIdRespDto,
   GetTugasByKelasIdRespDto,
   GetTugasSummaryRespDto,
@@ -24,6 +25,7 @@ import { KelasService } from "src/kelas/kelas.service";
 import { KonfigurasiService } from "src/konfigurasi/konfigurasi.service";
 import * as dayjs from "dayjs";
 import { SubmisiTugas } from "src/entities/submisiTugas.entity";
+import { PickedSubmisiTugasExtended } from "src/submisi-tugas/submisi-tugas.dto";
 
 @Injectable()
 export class TugasService {
@@ -278,10 +280,17 @@ export class TugasService {
   async getSubmisiTugasByMahasiswaAndTugasId(
     mahasiswaId: string,
     tugasId: string,
-  ): Promise<SubmisiTugas> {
+  ): Promise<PickedSubmisiTugasExtended> {
     await this.isMahasiswaTugasOrFail(mahasiswaId, tugasId);
 
     const submisiTugas = await this.submisiTugasRepo.findOne({
+      select: [
+        "id",
+        "isSubmitted",
+        "jawaban",
+        "submittedAt",
+        "berkasSubmisiTugas",
+      ],
       where: {
         mahasiswaId: mahasiswaId,
         tugasId: tugasId,
@@ -304,7 +313,7 @@ export class TugasService {
     page: number,
     limit: number,
     isSubmitted?: boolean,
-  ) {
+  ): Promise<GetDaftarTugasByMahasiswaIdRespDto[]> {
     const baseQuery = this.mahasiswaKelasRepo
       .createQueryBuilder("mk")
       .innerJoin("mk.kelas", "kelas", "kelas.id = mk.kelasId")
@@ -319,11 +328,12 @@ export class TugasService {
       .select([
         "mk.id",
         "kelas.id",
-        "mataKuliah.kode",
-        "mataKuliah.nama",
-        "tugas.id",
-        "submisiTugas.id",
-        "submisiTugas.isSubmitted",
+        "mataKuliah.kode AS kode_mata_kuliah",
+        "mataKuliah.nama AS nama_mata_kuliah",
+        "tugas.id AS tugas_id",
+        "tugas.judul AS tugas_judul",
+        "submisiTugas.id AS submisi_tugas_id",
+        "submisiTugas.isSubmitted AS submisi_tugas_is_submitted",
       ])
       .where("mk.mahasiswaId = :mahasiswaId", {
         mahasiswaId,
@@ -348,8 +358,21 @@ export class TugasService {
     const daftarTugas = await baseQuery
       .limit(limit)
       .skip((page - 1) * limit)
-      .getMany();
+      .getRawMany();
 
-    return daftarTugas;
+    const mappedDaftarTugas: GetDaftarTugasByMahasiswaIdRespDto[] =
+      daftarTugas.map((tugas) => ({
+        kodeMataKuliah: tugas.kode_mata_kuliah,
+        namaMataKuliah: tugas.nama_mata_kuliah,
+        id: tugas.tugas_id,
+        judul: tugas.tugas_judul,
+        submisiTugasId: tugas.submisi_tugas_id || undefined,
+        isSubmitted:
+          tugas.submisi_tugas_is_submitted === null
+            ? undefined
+            : tugas.submisi_tugas_is_submitted,
+      }));
+
+    return mappedDaftarTugas;
   }
 }