Bisa yuk
This commit is contained in:
@@ -29,78 +29,130 @@ export async function OPTIONS() {
|
||||
});
|
||||
}
|
||||
|
||||
export async function GET() {
|
||||
export async function GET(request: Request) {
|
||||
try {
|
||||
// Ambil parameter tahun angkatan dari query string
|
||||
const { searchParams } = new URL(request.url);
|
||||
const tahunAngkatan = searchParams.get('tahun_angkatan');
|
||||
|
||||
// Jumlah mahasiswa
|
||||
const { count: totalMahasiswa } = await supabase
|
||||
let totalMahasiswaQuery = supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true });
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
totalMahasiswaQuery = totalMahasiswaQuery.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: totalMahasiswa } = await totalMahasiswaQuery;
|
||||
|
||||
// Ambil mahasiswa aktif
|
||||
const { count: mahasiswaAktif } = await supabase
|
||||
let mahasiswaAktifQuery = supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('status_kuliah', 'Aktif');
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
mahasiswaAktifQuery = mahasiswaAktifQuery.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: mahasiswaAktif } = await mahasiswaAktifQuery;
|
||||
|
||||
// Ambil total lulus
|
||||
const { count: totalLulus } = await supabase
|
||||
let totalLulusQuery = supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('status_kuliah', 'Lulus');
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
totalLulusQuery = totalLulusQuery.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: totalLulus } = await totalLulusQuery;
|
||||
|
||||
// Ambil pria lulus
|
||||
const { count: priaLulus } = await supabase
|
||||
let priaLulusQuery = supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('status_kuliah', 'Lulus')
|
||||
.eq('jk', 'Pria');
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
priaLulusQuery = priaLulusQuery.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: priaLulus } = await priaLulusQuery;
|
||||
|
||||
// Ambil wanita lulus
|
||||
const { count: wanitaLulus } = await supabase
|
||||
let wanitaLulusQuery = supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('status_kuliah', 'Lulus')
|
||||
.eq('jk', 'Wanita');
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
wanitaLulusQuery = wanitaLulusQuery.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: wanitaLulus } = await wanitaLulusQuery;
|
||||
|
||||
// Ambil total berprestasi
|
||||
const { count: totalBerprestasi } = await supabase
|
||||
let prestasiTotalQuery = supabase
|
||||
.from('prestasi_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true });
|
||||
.select('*, mahasiswa!inner(tahun_angkatan)', { count: 'exact', head: true });
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
prestasiTotalQuery = prestasiTotalQuery.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: totalBerprestasi } = await prestasiTotalQuery;
|
||||
|
||||
// Ambil prestasi akademik
|
||||
const { count: prestasiAkademik } = await supabase
|
||||
let prestasiAkademikQuery = supabase
|
||||
.from('prestasi_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.select('*, mahasiswa!inner(tahun_angkatan)', { count: 'exact', head: true })
|
||||
.eq('jenis_prestasi', 'Akademik');
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
prestasiAkademikQuery = prestasiAkademikQuery.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: prestasiAkademik } = await prestasiAkademikQuery;
|
||||
|
||||
// Ambil prestasi non-akademik
|
||||
const { count: prestasiNonAkademik } = await supabase
|
||||
let prestasiNonAkademikQuery = supabase
|
||||
.from('prestasi_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.select('*, mahasiswa!inner(tahun_angkatan)', { count: 'exact', head: true })
|
||||
.eq('jenis_prestasi', 'Non-Akademik');
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
prestasiNonAkademikQuery = prestasiNonAkademikQuery.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: prestasiNonAkademik } = await prestasiNonAkademikQuery;
|
||||
|
||||
// Ambil total mahasiswa aktif + lulus
|
||||
const { count: totalMahasiswaAktifLulus } = await supabase
|
||||
let totalMahasiswaAktifLulusQuery = supabase
|
||||
.from('mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.in('status_kuliah', ['Aktif', 'Lulus']);
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
totalMahasiswaAktifLulusQuery = totalMahasiswaAktifLulusQuery.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: totalMahasiswaAktifLulus } = await totalMahasiswaAktifLulusQuery;
|
||||
|
||||
// Total mahasiswa beasiswa
|
||||
const { count: totalMahasiswaBeasiswa } = await supabase
|
||||
.from('beasiswa_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true });
|
||||
let beasiswaTotalQuery = supabase
|
||||
.from('beasiswa_mahasiswa')
|
||||
.select('*, mahasiswa!inner(tahun_angkatan)', { count: 'exact', head: true });
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
beasiswaTotalQuery = beasiswaTotalQuery.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: totalMahasiswaBeasiswa } = await beasiswaTotalQuery;
|
||||
|
||||
// Total mahasiswa beasiswa Pemerintah
|
||||
const { count: totalMahasiswaBeasiswaPemerintah } = await supabase
|
||||
.from('beasiswa_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('jenis_beasiswa', 'Pemerintah');
|
||||
let beasiswaPemerintahQuery = supabase
|
||||
.from('beasiswa_mahasiswa')
|
||||
.select('*, mahasiswa!inner(tahun_angkatan)', { count: 'exact', head: true })
|
||||
.eq('jenis_beasiswa', 'Pemerintah');
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
beasiswaPemerintahQuery = beasiswaPemerintahQuery.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: totalMahasiswaBeasiswaPemerintah } = await beasiswaPemerintahQuery;
|
||||
|
||||
// Total mahasiswa beasiswa Non-Pemerintah
|
||||
const { count: totalMahasiswaBeasiswaNonPemerintah } = await supabase
|
||||
.from('beasiswa_mahasiswa')
|
||||
.select('*', { count: 'exact', head: true })
|
||||
.eq('jenis_beasiswa', 'Non-Pemerintah');
|
||||
let beasiswaNonPemerintahQuery = supabase
|
||||
.from('beasiswa_mahasiswa')
|
||||
.select('*, mahasiswa!inner(tahun_angkatan)', { count: 'exact', head: true })
|
||||
.eq('jenis_beasiswa', 'Non-Pemerintah');
|
||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||
beasiswaNonPemerintahQuery = beasiswaNonPemerintahQuery.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
||||
}
|
||||
const { count: totalMahasiswaBeasiswaNonPemerintah } = await beasiswaNonPemerintahQuery;
|
||||
|
||||
const results: MahasiswaTotal = {
|
||||
total_mahasiswa: totalMahasiswa || 0,
|
||||
|
||||
Reference in New Issue
Block a user