revisi ini

This commit is contained in:
Randa Firman Putra
2026-02-04 02:09:05 +07:00
parent 1e30a9ccfc
commit 3797daa557
3 changed files with 139 additions and 47 deletions

View File

@@ -78,11 +78,6 @@ export async function GET(request: NextRequest) {
mata_kuliah!inner(kode_mk, nama_mk)
`);
// Add search condition if provided
if (search) {
query = query.or(`mahasiswa.nim.ilike.%${search}%,mahasiswa.nama.ilike.%${search}%,mata_kuliah.kode_mk.ilike.%${search}%,mata_kuliah.nama_mk.ilike.%${search}%`);
}
// Add semester filter if provided
if (semester && semester !== 'all') {
query = query.eq('semester', parseInt(semester));
@@ -94,7 +89,7 @@ export async function GET(request: NextRequest) {
}
// Add order by
query = query.order('semester', { ascending: true }).order('mahasiswa(nim)', { ascending: true });
query = query.order('semester', { ascending: true });
const { data, error } = await query;
@@ -104,7 +99,7 @@ export async function GET(request: NextRequest) {
}
// Transformasi data untuk meratakan field yang di-join
const transformedData = data.map((item: any) => ({
let transformedData = data.map((item: any) => ({
...item,
nim: item.mahasiswa?.nim || '',
nama: item.mahasiswa?.nama || '',
@@ -115,6 +110,27 @@ export async function GET(request: NextRequest) {
return rest;
});
// Client-side search filtering (untuk joined tables)
if (search) {
const searchLower = search.toLowerCase();
transformedData = transformedData.filter((item: any) => {
return (
item.nim?.toLowerCase().includes(searchLower) ||
item.nama?.toLowerCase().includes(searchLower) ||
item.kode_mk?.toLowerCase().includes(searchLower) ||
item.nama_mk?.toLowerCase().includes(searchLower)
);
});
}
// Sort by nim after filtering
transformedData.sort((a: any, b: any) => {
if (a.semester !== b.semester) {
return a.semester - b.semester;
}
return a.nim.localeCompare(b.nim);
});
return NextResponse.json(transformedData);
}
} catch (error) {
@@ -230,7 +246,7 @@ export async function POST(request: NextRequest) {
}
return NextResponse.json(
{
{
message: 'Nilai mahasiswa berhasil ditambahkan',
id: data.id_nilai,
mahasiswa: mahasiswa.nama,