This commit is contained in:
Randa Firman Putra
2025-09-16 14:22:37 +07:00
parent f2d15b38e3
commit 886fc59d28
17 changed files with 2386 additions and 30 deletions

View File

@@ -13,7 +13,9 @@ export async function GET(request: NextRequest) {
.from('mahasiswa')
.select(`
*,
kelompok_keahlian!id_kelompok_keahlian(id_kk, nama_kelompok)
kelompok_keahlian!id_kelompok_keahlian(id_kk, nama_kelompok),
dosen_pembimbing_1:dosen!pembimbing_1(id_dosen, nama_dosen),
dosen_pembimbing_2:dosen!pembimbing_2(id_dosen, nama_dosen)
`)
.eq('nim', nim)
.single();
@@ -25,9 +27,13 @@ export async function GET(request: NextRequest) {
// Transformasi data untuk meratakan field yang di-join
const transformedData = {
...data,
nama_kelompok_keahlian: data.kelompok_keahlian?.nama_kelompok || null
nama_kelompok_keahlian: data.kelompok_keahlian?.nama_kelompok || null,
nama_pembimbing_1: data.dosen_pembimbing_1?.nama_dosen || null,
nama_pembimbing_2: data.dosen_pembimbing_2?.nama_dosen || null
};
delete transformedData.kelompok_keahlian;
delete transformedData.dosen_pembimbing_1;
delete transformedData.dosen_pembimbing_2;
return NextResponse.json(transformedData);
} else {
@@ -36,7 +42,9 @@ export async function GET(request: NextRequest) {
.from('mahasiswa')
.select(`
*,
kelompok_keahlian!id_kelompok_keahlian(id_kk, nama_kelompok)
kelompok_keahlian!id_kelompok_keahlian(id_kk, nama_kelompok),
dosen_pembimbing_1:dosen!pembimbing_1(id_dosen, nama_dosen),
dosen_pembimbing_2:dosen!pembimbing_2(id_dosen, nama_dosen)
`)
.order('nim');
@@ -48,8 +56,10 @@ export async function GET(request: NextRequest) {
// Transformasi data untuk meratakan field yang di-join
const transformedData = data.map(item => ({
...item,
nama_kelompok_keahlian: item.kelompok_keahlian?.nama_kelompok || null
})).map(({ kelompok_keahlian, ...rest }) => rest);
nama_kelompok_keahlian: item.kelompok_keahlian?.nama_kelompok || null,
nama_pembimbing_1: item.dosen_pembimbing_1?.nama_dosen || null,
nama_pembimbing_2: item.dosen_pembimbing_2?.nama_dosen || null
})).map(({ kelompok_keahlian, dosen_pembimbing_1, dosen_pembimbing_2, ...rest }) => rest);
return NextResponse.json(transformedData);
}
@@ -75,7 +85,10 @@ export async function POST(request: NextRequest) {
ipk,
id_kelompok_keahlian,
status_kuliah,
semester
semester,
pembimbing_1,
pembimbing_2,
status_bimbingan
} = body;
// Validasi field yang wajib diisi
@@ -115,7 +128,10 @@ export async function POST(request: NextRequest) {
ipk: ipk || null,
id_kelompok_keahlian: id_kelompok_keahlian || null,
status_kuliah: status_kuliah || "Aktif",
semester: semester || 1
semester: semester || 1,
pembimbing_1: pembimbing_1 || null,
pembimbing_2: pembimbing_2 || null,
status_bimbingan: status_bimbingan || "Belum Selesai"
})
.select()
.single();
@@ -157,7 +173,10 @@ export async function PUT(request: NextRequest) {
ipk,
id_kelompok_keahlian,
status_kuliah,
semester
semester,
pembimbing_1,
pembimbing_2,
status_bimbingan
} = body;
// Cek apakah mahasiswa ada
@@ -185,7 +204,10 @@ export async function PUT(request: NextRequest) {
ipk: ipk || existing.ipk,
id_kelompok_keahlian: id_kelompok_keahlian || existing.id_kelompok_keahlian,
status_kuliah: status_kuliah || existing.status_kuliah,
semester: semester || existing.semester
semester: semester || existing.semester,
pembimbing_1: pembimbing_1 !== undefined ? pembimbing_1 : existing.pembimbing_1,
pembimbing_2: pembimbing_2 !== undefined ? pembimbing_2 : existing.pembimbing_2,
status_bimbingan: status_bimbingan || existing.status_bimbingan
})
.eq('nim', nim);