testing yuk
This commit is contained in:
@@ -38,20 +38,20 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by kabupaten and count
|
||||
// Kelompokkan berdasarkan kabupaten dan hitung
|
||||
const groupedData = data.reduce((acc, item) => {
|
||||
acc[item.kabupaten] = (acc[item.kabupaten] || 0) + 1;
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: AsalDaerah[] = Object.entries(groupedData)
|
||||
.map(([kabupaten, jumlah]) => ({
|
||||
kabupaten,
|
||||
jumlah
|
||||
}))
|
||||
.sort((a, b) => {
|
||||
// Sort by jumlah DESC, then by kabupaten ASC
|
||||
// Urutkan berdasarkan jumlah DESC, kemudian kabupaten ASC
|
||||
if (a.jumlah !== b.jumlah) {
|
||||
return b.jumlah - a.jumlah;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatanValue = row.tahun_angkatan;
|
||||
const kabupaten = row.kabupaten;
|
||||
@@ -58,7 +58,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results
|
||||
// Urutkan hasil
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and kabupaten
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan kabupaten
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const kabupaten = item.kabupaten;
|
||||
@@ -41,7 +41,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: AsalDaerahLulus[] = Object.entries(groupedData)
|
||||
.map(([key, jumlah_lulus_tepat_waktu]) => {
|
||||
const [tahun_angkatan, kabupaten] = key.split('-');
|
||||
@@ -52,7 +52,7 @@ export async function GET(request: Request) {
|
||||
};
|
||||
})
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan DESC, jumlah_lulus_tepat_waktu DESC
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, jumlah_lulus_tepat_waktu DESC
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatanValue = row.tahun_angkatan;
|
||||
const kabupaten = row.kabupaten;
|
||||
@@ -58,7 +58,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results
|
||||
// Urutkan hasil
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
|
||||
@@ -41,7 +41,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by kabupaten, tahun_angkatan (optional), status_kuliah
|
||||
// Kelompokkan berdasarkan kabupaten, tahun_angkatan (opsional), status_kuliah
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const kabupaten = item.kabupaten;
|
||||
const tahun_angkatan = tahunAngkatan && tahunAngkatan !== 'all' ? item.tahun_angkatan : undefined;
|
||||
@@ -53,7 +53,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: AsalDaerahStatus[] = Object.entries(groupedData)
|
||||
.map(([key, total_mahasiswa]) => {
|
||||
const parts = key.split('-');
|
||||
@@ -75,7 +75,7 @@ export async function GET(request: Request) {
|
||||
}
|
||||
})
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan ASC (if exists), kabupaten ASC, status_kuliah ASC
|
||||
// Urutkan berdasarkan tahun_angkatan ASC (jika ada), kabupaten ASC, status_kuliah ASC
|
||||
if (a.tahun_angkatan !== undefined && b.tahun_angkatan !== undefined && a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@ export async function GET() {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by kabupaten and count
|
||||
// Kelompokkan berdasarkan kabupaten dan hitung
|
||||
const groupedData = data.reduce((acc, item) => {
|
||||
const kabupaten = item.kabupaten;
|
||||
acc[kabupaten] = (acc[kabupaten] || 0) + 1;
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to array format
|
||||
// Konversi ke format array
|
||||
const results: AsalDaerah[] = Object.entries(groupedData).map(([kabupaten, jumlah]) => ({
|
||||
kabupaten,
|
||||
jumlah
|
||||
|
||||
@@ -39,13 +39,13 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by jk and count
|
||||
// Kelompokkan berdasarkan jk dan hitung
|
||||
const groupedData = data.reduce((acc, item) => {
|
||||
acc[item.jk] = (acc[item.jk] || 0) + 1;
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format
|
||||
// Konversi ke format akhir
|
||||
const results: GenderData[] = Object.entries(groupedData).map(([jk, jumlah]) => ({
|
||||
tahun_angkatan: parseInt(tahun),
|
||||
jk,
|
||||
|
||||
@@ -25,7 +25,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and calculate statistics in JavaScript
|
||||
// Kelompokkan dan hitung statistik di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatan = row.tahun_angkatan;
|
||||
const ipk = row.ipk;
|
||||
@@ -50,14 +50,14 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Calculate average IPK and format the results
|
||||
// Hitung rata-rata IPK dan format hasil
|
||||
const result = groupedData.map((group: any) => ({
|
||||
tahun_angkatan: group.tahun_angkatan,
|
||||
total_mahasiswa_beasiswa: group.total_mahasiswa_beasiswa,
|
||||
rata_rata_ipk: Math.round((group.total_ipk / group.total_mahasiswa_beasiswa) * 100) / 100
|
||||
}));
|
||||
|
||||
// Sort by tahun_angkatan ascending
|
||||
// Urutkan berdasarkan tahun_angkatan ascending
|
||||
const sortedData = result.sort((a: any, b: any) => a.tahun_angkatan - b.tahun_angkatan);
|
||||
|
||||
return NextResponse.json(sortedData);
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and calculate average IPK
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan hitung rata-rata IPK
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const ipk = item.ipk;
|
||||
@@ -50,14 +50,14 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<number, { total_ipk: number; count: number }>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: IpkLulusTepat[] = Object.entries(groupedData)
|
||||
.map(([tahun_angkatan, data]) => ({
|
||||
tahun_angkatan: parseInt(tahun_angkatan),
|
||||
rata_rata_ipk: Math.round((data.total_ipk / data.count) * 100) / 100
|
||||
}))
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan ASC
|
||||
// Urutkan berdasarkan tahun_angkatan ASC
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
});
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and calculate statistics in JavaScript
|
||||
// Kelompokkan dan hitung statistik di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatan = row.tahun_angkatan;
|
||||
const ipk = row.ipk;
|
||||
@@ -50,14 +50,14 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Calculate average IPK and format the results
|
||||
// Hitung rata-rata IPK dan format hasil
|
||||
const result = groupedData.map((group: any) => ({
|
||||
tahun_angkatan: group.tahun_angkatan,
|
||||
total_mahasiswa_prestasi: group.total_mahasiswa_prestasi,
|
||||
rata_rata_ipk: Math.round((group.total_ipk / group.total_mahasiswa_prestasi) * 100) / 100
|
||||
}));
|
||||
|
||||
// Sort by tahun_angkatan ascending
|
||||
// Urutkan berdasarkan tahun_angkatan ascending
|
||||
const sortedData = result.sort((a: any, b: any) => a.tahun_angkatan - b.tahun_angkatan);
|
||||
|
||||
return NextResponse.json(sortedData);
|
||||
|
||||
@@ -42,7 +42,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and status_kuliah
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan status_kuliah
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const status_kuliah = item.status_kuliah;
|
||||
@@ -64,7 +64,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, { tahun_angkatan: number; status_kuliah: string; total_mahasiswa: number; total_ipk: number }>);
|
||||
|
||||
// Convert to final format and calculate average IPK
|
||||
// Konversi ke format akhir dan hitung rata-rata IPK
|
||||
const results: IpkStatus[] = Object.values(groupedData)
|
||||
.map(item => ({
|
||||
tahun_angkatan: item.tahun_angkatan,
|
||||
@@ -73,7 +73,7 @@ export async function GET(request: Request) {
|
||||
rata_rata_ipk: Math.round((item.total_ipk / item.total_mahasiswa) * 100) / 100
|
||||
}))
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan DESC, status_kuliah ASC
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, status_kuliah ASC
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ export async function GET() {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and calculate average IPK
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan hitung rata-rata IPK
|
||||
const groupedData = data.reduce((acc, item) => {
|
||||
const tahun = item.tahun_angkatan;
|
||||
if (!acc[tahun]) {
|
||||
@@ -39,7 +39,7 @@ export async function GET() {
|
||||
return acc;
|
||||
}, {} as Record<number, { sum: number; count: number }>);
|
||||
|
||||
// Convert to final format
|
||||
// Konversi ke format akhir
|
||||
const results: IPKData[] = Object.entries(groupedData).map(([tahun, data]) => ({
|
||||
tahun_angkatan: parseInt(tahun),
|
||||
rata_rata_ipk: Math.round((data.sum / data.count) * 100) / 100
|
||||
|
||||
@@ -17,7 +17,7 @@ export async function GET() {
|
||||
);
|
||||
}
|
||||
|
||||
// Get unique jenis_beasiswa values
|
||||
// Ambil nilai jenis_beasiswa yang unik
|
||||
const uniqueBeasiswa = [...new Set(data.map(item => item.jenis_beasiswa))];
|
||||
|
||||
return NextResponse.json(uniqueBeasiswa);
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatanValue = row.tahun_angkatan;
|
||||
const jenisPendaftaran = row.jenis_pendaftaran;
|
||||
@@ -58,7 +58,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results
|
||||
// Urutkan hasil
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and jenis_pendaftaran
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan jenis_pendaftaran
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const jenis_pendaftaran = item.jenis_pendaftaran;
|
||||
@@ -41,7 +41,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: JenisPendaftaranLulus[] = Object.entries(groupedData)
|
||||
.map(([key, jumlah_lulus_tepat_waktu]) => {
|
||||
const [tahun_angkatan, jenis_pendaftaran] = key.split('-');
|
||||
@@ -52,7 +52,7 @@ export async function GET(request: Request) {
|
||||
};
|
||||
})
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan DESC, jenis_pendaftaran ASC
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, jenis_pendaftaran ASC
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatan = row.tahun_angkatan;
|
||||
const jenisPendaftaran = row.jenis_pendaftaran;
|
||||
@@ -51,7 +51,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results
|
||||
// Urutkan hasil
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
|
||||
@@ -41,7 +41,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by jenis_pendaftaran, tahun_angkatan, status_kuliah
|
||||
// Kelompokkan berdasarkan jenis_pendaftaran, tahun_angkatan, status_kuliah
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const jenis_pendaftaran = item.jenis_pendaftaran;
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
@@ -51,7 +51,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: JenisPendaftaranStatus[] = Object.entries(groupedData)
|
||||
.map(([key, total_mahasiswa]) => {
|
||||
const [jenis_pendaftaran, tahun_angkatan, status_kuliah] = key.split('-');
|
||||
@@ -63,7 +63,7 @@ export async function GET(request: Request) {
|
||||
};
|
||||
})
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan DESC, jenis_pendaftaran ASC, status_kuliah ASC
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, jenis_pendaftaran ASC, status_kuliah ASC
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -37,14 +37,14 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and jenis_pendaftaran
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan jenis_pendaftaran
|
||||
const groupedData = data.reduce((acc, item) => {
|
||||
const key = `${item.tahun_angkatan}-${item.jenis_pendaftaran}`;
|
||||
acc[key] = (acc[key] || 0) + 1;
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format
|
||||
// Konversi ke format akhir
|
||||
const results: JenisPendaftaran[] = Object.entries(groupedData).map(([key, jumlah]) => {
|
||||
const [tahun_angkatan, jenis_pendaftaran] = key.split('-');
|
||||
return {
|
||||
@@ -53,7 +53,7 @@ export async function GET(request: Request) {
|
||||
jumlah
|
||||
};
|
||||
}).sort((a, b) => {
|
||||
// Sort by tahun_angkatan DESC, then by jenis_pendaftaran
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, kemudian jenis_pendaftaran
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ export async function GET() {
|
||||
);
|
||||
}
|
||||
|
||||
// Get unique jenis_prestasi values
|
||||
// Ambil nilai jenis_prestasi yang unik
|
||||
const uniquePrestasi = [...new Set(data.map(item => item.jenis_prestasi))];
|
||||
|
||||
return NextResponse.json(uniquePrestasi);
|
||||
|
||||
@@ -41,7 +41,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan, status_kuliah, nama_kelompok
|
||||
// Kelompokkan berdasarkan tahun_angkatan, status_kuliah, nama_kelompok
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const status_kuliah = item.status_kuliah;
|
||||
@@ -51,7 +51,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: KelompokKeahlianStatus[] = Object.entries(groupedData)
|
||||
.map(([key, jumlah_mahasiswa]) => {
|
||||
const [tahun_angkatan, status_kuliah, nama_kelompok] = key.split('-');
|
||||
@@ -63,7 +63,7 @@ export async function GET(request: Request) {
|
||||
};
|
||||
})
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan ASC, nama_kelompok ASC
|
||||
// Urutkan berdasarkan tahun_angkatan ASC, nama_kelompok ASC
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ interface KelompokKeahlianLulusTepat {
|
||||
|
||||
export async function GET(request: Request) {
|
||||
try {
|
||||
// Get all lulus students with their kelompok keahlian
|
||||
// Ambil semua mahasiswa lulus dengan kelompok keahlian mereka
|
||||
const { data, error } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select(`
|
||||
@@ -36,7 +36,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Process data to calculate percentages
|
||||
// Proses data untuk menghitung persentase
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const nama_kelompok = item.kelompok_keahlian?.nama_kelompok;
|
||||
if (!nama_kelompok) return acc;
|
||||
@@ -50,7 +50,7 @@ export async function GET(request: Request) {
|
||||
|
||||
acc[nama_kelompok].total_lulus += 1;
|
||||
|
||||
// Check if lulus tepat waktu (semester <= 8)
|
||||
// Cek apakah lulus tepat waktu (semester <= 8)
|
||||
if (item.semester <= 8) {
|
||||
acc[nama_kelompok].lulus_tepat += 1;
|
||||
}
|
||||
@@ -58,7 +58,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, { total_lulus: number; lulus_tepat: number }>);
|
||||
|
||||
// Convert to final format (without percentage) and sort by count DESC then name ASC
|
||||
// Konversi ke format akhir (tanpa persentase) dan urutkan berdasarkan jumlah DESC kemudian nama ASC
|
||||
const results: KelompokKeahlianLulusTepat[] = Object.entries(groupedData)
|
||||
.map(([nama_kelompok, counts]) => ({
|
||||
nama_kelompok,
|
||||
|
||||
@@ -38,7 +38,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan, nama_kelompok
|
||||
// Kelompokkan berdasarkan tahun_angkatan, nama_kelompok
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const nama_kelompok = item.kelompok_keahlian?.nama_kelompok;
|
||||
@@ -47,7 +47,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: KelompokKeahlianStatus[] = Object.entries(groupedData)
|
||||
.map(([key, jumlah_mahasiswa]) => {
|
||||
const [tahun_angkatan, nama_kelompok] = key.split('-');
|
||||
@@ -58,7 +58,7 @@ export async function GET(request: Request) {
|
||||
};
|
||||
})
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan ASC, nama_kelompok ASC
|
||||
// Urutkan berdasarkan tahun_angkatan ASC, nama_kelompok ASC
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and jk
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan jk
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const jk = item.jk;
|
||||
@@ -41,7 +41,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format and sort
|
||||
// Konversi ke format akhir dan urutkan
|
||||
const results: LulusTepatWaktu[] = Object.entries(groupedData)
|
||||
.map(([key, jumlah_lulus_tepat_waktu]) => {
|
||||
const [tahun_angkatan, jk] = key.split('-');
|
||||
@@ -52,7 +52,7 @@ export async function GET(request: Request) {
|
||||
};
|
||||
})
|
||||
.sort((a, b) => {
|
||||
// Sort by tahun_angkatan DESC, jk ASC
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, jk ASC
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ export async function GET(req: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan, separate active and graduated students
|
||||
// Kelompokkan berdasarkan tahun_angkatan, pisahkan mahasiswa aktif dan lulus
|
||||
const groupedData = data.reduce((acc, item) => {
|
||||
const tahun = item.tahun_angkatan;
|
||||
if (!acc[tahun]) {
|
||||
@@ -65,7 +65,7 @@ export async function GET(req: Request) {
|
||||
lulus: { sum: number; count: number };
|
||||
}>);
|
||||
|
||||
// Convert to final format
|
||||
// Konversi ke format akhir
|
||||
const results: MasaStudiAktifData[] = Object.values(groupedData).map((data) => ({
|
||||
tahun_angkatan: data.tahun_angkatan,
|
||||
rata_rata_masa_studi_aktif_tahun: data.aktif.count > 0
|
||||
@@ -76,7 +76,7 @@ export async function GET(req: Request) {
|
||||
: 0,
|
||||
}));
|
||||
|
||||
// Sort by tahun_angkatan
|
||||
// Urutkan berdasarkan tahun_angkatan
|
||||
results.sort((a, b) => a.tahun_angkatan - b.tahun_angkatan);
|
||||
|
||||
return NextResponse.json(results, {
|
||||
|
||||
@@ -42,7 +42,7 @@ export async function GET(req: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and status_kuliah, calculate average semester/2
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan status_kuliah, hitung rata-rata semester/2
|
||||
const groupedData = data.reduce((acc, item) => {
|
||||
const tahun = item.tahun_angkatan;
|
||||
const status = item.status_kuliah;
|
||||
@@ -55,14 +55,14 @@ export async function GET(req: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, { sum: number; count: number; tahun_angkatan: number; status_kuliah: string }>);
|
||||
|
||||
// Convert to final format
|
||||
// Konversi ke format akhir
|
||||
const results: MasaStudiData[] = Object.values(groupedData).map((data) => ({
|
||||
tahun_angkatan: data.tahun_angkatan,
|
||||
status_kuliah: data.status_kuliah,
|
||||
rata_rata_masa_studi_tahun: Math.round(((data.sum / data.count) / 2) * 10) / 10,
|
||||
}));
|
||||
|
||||
// Sort by tahun_angkatan, status_kuliah
|
||||
// Urutkan berdasarkan tahun_angkatan, status_kuliah
|
||||
results.sort((a, b) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
|
||||
@@ -30,7 +30,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatanValue = row.mahasiswa?.tahun_angkatan;
|
||||
const namaBeasiswa = row.nama_beasiswa;
|
||||
@@ -58,7 +58,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results by tahun_angkatan ascending (as expected by component)
|
||||
// Urutkan hasil berdasarkan tahun_angkatan ascending (sesuai yang diharapkan komponen)
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatanValue = row.mahasiswa?.tahun_angkatan;
|
||||
const namaBeasiswa = row.nama_beasiswa;
|
||||
@@ -60,7 +60,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results by tahun_angkatan ascending (as expected by component)
|
||||
// Urutkan hasil berdasarkan tahun_angkatan ascending (sesuai yang diharapkan komponen)
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
|
||||
@@ -43,7 +43,7 @@ interface MahasiswaProfile {
|
||||
|
||||
export async function GET(request: Request) {
|
||||
try {
|
||||
// Get token from cookies
|
||||
// Ambil token dari cookies
|
||||
const cookieStore = await cookies();
|
||||
const token = cookieStore.get('token')?.value;
|
||||
|
||||
@@ -54,7 +54,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Verify JWT token
|
||||
// Verifikasi JWT token
|
||||
const { payload } = await jwtVerify(
|
||||
token,
|
||||
new TextEncoder().encode(process.env.JWT_SECRET || 'your-secret-key')
|
||||
@@ -62,7 +62,7 @@ export async function GET(request: Request) {
|
||||
|
||||
const nim = payload.nim as string;
|
||||
|
||||
// Get mahasiswa data
|
||||
// Ambil data mahasiswa
|
||||
const { data: mahasiswaData, error: mahasiswaError } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select(`
|
||||
@@ -86,14 +86,14 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Get status_mahasiswa data
|
||||
// Ambil data status_mahasiswa
|
||||
const { data: statusData, error: statusError } = await supabase
|
||||
.from('status_mahasiswa')
|
||||
.select('status_kuliah, semester')
|
||||
.eq('nim', nim)
|
||||
.single();
|
||||
|
||||
// Get prestasi_mahasiswa data
|
||||
// Ambil data prestasi_mahasiswa
|
||||
const { data: prestasiData, error: prestasiError } = await supabase
|
||||
.from('prestasi_mahasiswa')
|
||||
.select(`
|
||||
@@ -105,7 +105,7 @@ export async function GET(request: Request) {
|
||||
`)
|
||||
.eq('nim', nim);
|
||||
|
||||
// Get beasiswa_mahasiswa data
|
||||
// Ambil data beasiswa_mahasiswa
|
||||
const { data: beasiswaData, error: beasiswaError } = await supabase
|
||||
.from('beasiswa_mahasiswa')
|
||||
.select(`
|
||||
@@ -116,7 +116,7 @@ export async function GET(request: Request) {
|
||||
`)
|
||||
.eq('nim', nim);
|
||||
|
||||
// Transform the data to match the expected interface
|
||||
// Transformasi data sesuai interface yang diharapkan
|
||||
const profile: MahasiswaProfile = {
|
||||
// Data Mahasiswa
|
||||
nama: mahasiswaData.nama,
|
||||
|
||||
@@ -3,7 +3,7 @@ import supabase from '@/lib/db';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
try {
|
||||
// Get all mahasiswa data and process in JavaScript
|
||||
// Ambil semua data mahasiswa dan proses di JavaScript
|
||||
const { data: mahasiswaData, error } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select('provinsi');
|
||||
@@ -16,7 +16,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Process the data in JavaScript
|
||||
// Proses data di JavaScript
|
||||
let kalimantanBarat = 0;
|
||||
let luarKalimantanBarat = 0;
|
||||
|
||||
@@ -30,7 +30,7 @@ export async function GET(request: Request) {
|
||||
}
|
||||
});
|
||||
|
||||
// Transform the data to match the expected format
|
||||
// Transformasi data sesuai format yang diharapkan
|
||||
const result = [
|
||||
{
|
||||
provinsi: 'Kalimantan Barat',
|
||||
|
||||
@@ -23,7 +23,7 @@ export async function OPTIONS() {
|
||||
|
||||
export async function GET() {
|
||||
try {
|
||||
// Get all mahasiswa data
|
||||
// Ambil semua data mahasiswa
|
||||
const { data, error } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select('tahun_angkatan, jk');
|
||||
@@ -43,7 +43,7 @@ export async function GET() {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and calculate statistics
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan hitung statistik
|
||||
const groupedData = data.reduce((acc, item) => {
|
||||
const tahun = item.tahun_angkatan;
|
||||
if (!acc[tahun]) {
|
||||
@@ -65,7 +65,7 @@ export async function GET() {
|
||||
return acc;
|
||||
}, {} as Record<number, MahasiswaStatistik>);
|
||||
|
||||
// Convert to array and sort by tahun_angkatan
|
||||
// Konversi ke array dan urutkan berdasarkan tahun_angkatan
|
||||
const results: MahasiswaStatistik[] = Object.values(groupedData)
|
||||
.sort((a, b) => a.tahun_angkatan - b.tahun_angkatan);
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatanValue = row.tahun_angkatan;
|
||||
const statusKuliah = row.status_kuliah;
|
||||
@@ -64,7 +64,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results
|
||||
// Urutkan hasil
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return a.tahun_angkatan - b.tahun_angkatan;
|
||||
|
||||
@@ -39,7 +39,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and jk
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan jk
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const jk = item.jk;
|
||||
@@ -48,7 +48,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format
|
||||
// Konversi ke format akhir
|
||||
const results: StatusMahasiswa[] = Object.entries(groupedData).map(([key, total_mahasiswa]) => {
|
||||
const [tahun_angkatan, jk] = key.split('-');
|
||||
return {
|
||||
@@ -57,7 +57,7 @@ export async function GET(request: Request) {
|
||||
total_mahasiswa
|
||||
};
|
||||
}).sort((a, b) => {
|
||||
// Sort by tahun_angkatan DESC, then by jk
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, kemudian jk
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ export async function GET() {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and status_kuliah
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan status_kuliah
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.tahun_angkatan;
|
||||
const status_kuliah = item.status_kuliah;
|
||||
@@ -31,7 +31,7 @@ export async function GET() {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format
|
||||
// Konversi ke format akhir
|
||||
const results: StatusData[] = Object.entries(groupedData).map(([key, jumlah]) => {
|
||||
const [tahun_angkatan, status_kuliah] = key.split('-');
|
||||
return {
|
||||
|
||||
@@ -25,10 +25,10 @@ export async function GET() {
|
||||
);
|
||||
}
|
||||
|
||||
// Get unique tahun_angkatan values and limit to 7 most recent
|
||||
// Ambil nilai tahun_angkatan unik dan batasi 7 tahun terbaru
|
||||
const uniqueYears = [...new Set(data.map(item => item.tahun_angkatan))]
|
||||
.sort((a, b) => b - a) // Sort descending
|
||||
.slice(0, 7); // Take only 7 most recent years
|
||||
.sort((a, b) => b - a) // Urutkan descending
|
||||
.slice(0, 7); // Ambil hanya 7 tahun terbaru
|
||||
|
||||
return NextResponse.json(uniqueYears, {
|
||||
headers: {
|
||||
|
||||
@@ -6,7 +6,7 @@ export async function GET(request: Request) {
|
||||
const { searchParams } = new URL(request.url);
|
||||
const tahunAngkatan = searchParams.get('tahunAngkatan');
|
||||
|
||||
// Build query based on parameters
|
||||
// Bangun query berdasarkan parameter
|
||||
let query = supabase
|
||||
.from('mahasiswa')
|
||||
.select(`
|
||||
@@ -17,7 +17,7 @@ export async function GET(request: Request) {
|
||||
)
|
||||
`);
|
||||
|
||||
// Add tahun angkatan filter if provided and not 'all'
|
||||
// Tambahkan filter tahun angkatan jika diberikan dan bukan 'all'
|
||||
if (tahunAngkatan && tahunAngkatan !== 'null' && tahunAngkatan !== 'undefined' && tahunAngkatan !== 'all') {
|
||||
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
@@ -32,18 +32,18 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatan = row.tahun_angkatan;
|
||||
|
||||
// Handle array of prestasi_mahasiswa
|
||||
// Tangani array prestasi_mahasiswa
|
||||
const prestasiArray = Array.isArray(row.prestasi_mahasiswa) ? row.prestasi_mahasiswa : [row.prestasi_mahasiswa];
|
||||
|
||||
if (!tahunAngkatan) {
|
||||
return acc;
|
||||
}
|
||||
|
||||
// Process each prestasi in the array
|
||||
// Proses setiap prestasi dalam array
|
||||
prestasiArray.forEach((prestasi: any) => {
|
||||
if (!prestasi || !prestasi.tingkat_prestasi) {
|
||||
return;
|
||||
@@ -72,7 +72,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results
|
||||
// Urutkan hasil
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
|
||||
@@ -7,9 +7,9 @@ export async function GET(request: Request) {
|
||||
const tahunAngkatan = searchParams.get('tahunAngkatan');
|
||||
const jenisPrestasi = searchParams.get('jenisPrestasi');
|
||||
|
||||
// Validate jenisPrestasi parameter (allow null)
|
||||
// Validasi parameter jenisPrestasi (izinkan null)
|
||||
if (jenisPrestasi && jenisPrestasi !== 'null' && jenisPrestasi !== 'undefined') {
|
||||
// Validate against valid enum values only if jenisPrestasi is provided
|
||||
// Validasi terhadap nilai enum yang valid hanya jika jenisPrestasi diberikan
|
||||
const validJenisPrestasi = ['Akademik', 'Non-Akademik'];
|
||||
if (!validJenisPrestasi.includes(jenisPrestasi)) {
|
||||
return NextResponse.json(
|
||||
@@ -19,7 +19,7 @@ export async function GET(request: Request) {
|
||||
}
|
||||
}
|
||||
|
||||
// Build query based on parameters
|
||||
// Bangun query berdasarkan parameter
|
||||
let query = supabase
|
||||
.from('mahasiswa')
|
||||
.select(`
|
||||
@@ -30,12 +30,12 @@ export async function GET(request: Request) {
|
||||
)
|
||||
`);
|
||||
|
||||
// Add tahun angkatan filter if provided
|
||||
// Tambahkan filter tahun angkatan jika diberikan
|
||||
if (tahunAngkatan && tahunAngkatan !== 'null' && tahunAngkatan !== 'undefined') {
|
||||
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
|
||||
// Add jenis prestasi filter if provided
|
||||
// Tambahkan filter jenis prestasi jika diberikan
|
||||
if (jenisPrestasi && jenisPrestasi !== 'null' && jenisPrestasi !== 'undefined') {
|
||||
query = query.eq('prestasi_mahasiswa.jenis_prestasi', jenisPrestasi);
|
||||
}
|
||||
@@ -50,18 +50,18 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group and count the data in JavaScript
|
||||
// Kelompokkan dan hitung data di JavaScript
|
||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||
const tahunAngkatan = row.tahun_angkatan;
|
||||
|
||||
// Handle array of prestasi_mahasiswa
|
||||
// Tangani array prestasi_mahasiswa
|
||||
const prestasiArray = Array.isArray(row.prestasi_mahasiswa) ? row.prestasi_mahasiswa : [row.prestasi_mahasiswa];
|
||||
|
||||
if (!tahunAngkatan) {
|
||||
return acc;
|
||||
}
|
||||
|
||||
// Process each prestasi in the array
|
||||
// Proses setiap prestasi dalam array
|
||||
prestasiArray.forEach((prestasi: any) => {
|
||||
if (!prestasi || !prestasi.tingkat_prestasi) {
|
||||
return;
|
||||
@@ -90,7 +90,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort the results
|
||||
// Urutkan hasil
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
|
||||
@@ -32,7 +32,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and jk
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan jk
|
||||
const groupedData = data.reduce((acc, item: any) => {
|
||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
||||
const jk = item.mahasiswa.jk;
|
||||
@@ -41,7 +41,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Convert to final format
|
||||
// Konversi ke format akhir
|
||||
const results: BeasiswaData[] = Object.entries(groupedData).map(([key, jumlah_mahasiswa_beasiswa]) => {
|
||||
const [tahun_angkatan, jk] = key.split('-');
|
||||
return {
|
||||
@@ -50,7 +50,7 @@ export async function GET(request: Request) {
|
||||
jumlah_mahasiswa_beasiswa
|
||||
};
|
||||
}).sort((a, b) => {
|
||||
// Sort by tahun_angkatan DESC, then by jk
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, kemudian jk
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ export async function GET(request: Request) {
|
||||
);
|
||||
}
|
||||
|
||||
// Group by tahun_angkatan and jk
|
||||
// Kelompokkan berdasarkan tahun_angkatan dan jk
|
||||
const groupedData = data.reduce((acc: any[], item: any) => {
|
||||
const tahunAngkatan = item.tahun_angkatan;
|
||||
const jk = item.jk;
|
||||
@@ -55,7 +55,7 @@ export async function GET(request: Request) {
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
// Sort by tahun_angkatan DESC, then by jk
|
||||
// Urutkan berdasarkan tahun_angkatan DESC, kemudian jk
|
||||
const sortedData = groupedData.sort((a: any, b: any) => {
|
||||
if (a.tahun_angkatan !== b.tahun_angkatan) {
|
||||
return b.tahun_angkatan - a.tahun_angkatan;
|
||||
|
||||
@@ -31,55 +31,55 @@ export async function OPTIONS() {
|
||||
|
||||
export async function GET() {
|
||||
try {
|
||||
// jumlah mahasiswa
|
||||
// Jumlah mahasiswa
|
||||
const { count: totalMahasiswa } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true });
|
||||
|
||||
// Get mahasiswa aktif
|
||||
// Ambil mahasiswa aktif
|
||||
const { count: mahasiswaAktif } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('status_kuliah', 'Aktif');
|
||||
|
||||
// Get total lulus
|
||||
// Ambil total lulus
|
||||
const { count: totalLulus } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('status_kuliah', 'Lulus');
|
||||
|
||||
// Get pria lulus
|
||||
// Ambil pria lulus
|
||||
const { count: priaLulus } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('status_kuliah', 'Lulus')
|
||||
.eq('jk', 'Pria');
|
||||
|
||||
// Get wanita lulus
|
||||
// Ambil wanita lulus
|
||||
const { count: wanitaLulus } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('status_kuliah', 'Lulus')
|
||||
.eq('jk', 'Wanita');
|
||||
|
||||
// Get total berprestasi
|
||||
// Ambil total berprestasi
|
||||
const { count: totalBerprestasi } = await supabase
|
||||
.from('prestasi_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true });
|
||||
|
||||
// Get prestasi akademik
|
||||
// Ambil prestasi akademik
|
||||
const { count: prestasiAkademik } = await supabase
|
||||
.from('prestasi_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('jenis_prestasi', 'Akademik');
|
||||
|
||||
// Get prestasi non-akademik
|
||||
// Ambil prestasi non-akademik
|
||||
const { count: prestasiNonAkademik } = await supabase
|
||||
.from('prestasi_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('jenis_prestasi', 'Non-Akademik');
|
||||
|
||||
// Get total mahasiswa aktif + lulus
|
||||
// Ambil total mahasiswa aktif + lulus
|
||||
const { count: totalMahasiswaAktifLulus } = await supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
|
||||
Reference in New Issue
Block a user