MIF_E31221446/app/Http/Controllers/DashboardController.php

65 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Models\TestData;
use App\Models\TrainData;
use Illuminate\Routing\Controller as BaseController;
class DashboardController extends Controller
{
public function showDashboard()
{
// Jumlah total santri
$totalSantri = TrainData::count();
// Jumlah santri tepat waktu berdasarkan data klasifikasi
$totalTepatWaktu = TestData::where('predicted_status', 'Tercapai')->count();
// Ambil data berdasarkan tahun angkatan
$tahunAngkatan = TestData::select('tahun_angkatan')
->distinct()
->orderBy('tahun_angkatan', 'asc')
->pluck('tahun_angkatan')
->toArray();
$tahunAngkatanTable = TestData::selectRaw('tahun_angkatan,
COUNT(*) as total,
COALESCE(SUM(CASE WHEN predicted_status = "Tercapai" THEN 1 ELSE 0 END), 0) as tepat')
->groupBy('tahun_angkatan')
->orderBy('tahun_angkatan', 'asc')
->get();
// Data untuk grafik jenis kelamin berdasarkan tahun angkatan
$genderData = TestData::selectRaw('tahun_angkatan,
SUM(CASE WHEN jenis_kelamin = "Laki-laki" THEN 1 ELSE 0 END) as laki,
SUM(CASE WHEN jenis_kelamin = "Perempuan" THEN 1 ELSE 0 END) as perempuan')
->groupBy('tahun_angkatan')
->orderBy('tahun_angkatan', 'asc')
->get();
// Data untuk grafik asal daerah berdasarkan tahun angkatan
$regionData = TestData::selectRaw('tahun_angkatan,
SUM(CASE WHEN asal_daerah = "Dalam Provinsi" THEN 1 ELSE 0 END) as dalam,
SUM(CASE WHEN asal_daerah = "Luar Provinsi" THEN 1 ELSE 0 END) as luar')
->groupBy('tahun_angkatan')
->orderBy('tahun_angkatan', 'asc')
->get();
return view('pages.admin.dashboard', compact(
'totalSantri',
'totalTepatWaktu',
'tahunAngkatan',
'tahunAngkatanTable',
'genderData',
'regionData'
));
}
}