get(); $stats = DB::table('data_latih') ->selectRaw(' ROUND(AVG(phbs), 2) AS persen_phbs_baik, ROUND(100 - AVG(phbs), 2) AS persen_phbs_tidak_baik, ROUND(AVG(imunisasi), 2) AS persen_imunisasi, ROUND(100 - AVG(imunisasi), 2) AS persen_tidak_imunisasi, ROUND(AVG(merokok), 2) AS persen_merokok, ROUND(100 - AVG(merokok), 2) AS persen_tidak_merokok ') ->first(); $jumlahKasusDataLatih = DB::table('data_latih')->sum('kasus_2023'); $kabupatens = DB::table('kabupatens') ->join('data_latih', 'kabupatens.nama', '=', 'data_latih.kecamatan') ->select('kabupatens.nama', 'kabupatens.latitude', 'kabupatens.longitude', 'data_latih.hipotesis') ->get(); $topKasus = DB::table('data_latih') ->join('kabupatens', 'data_latih.kecamatan', '=', 'kabupatens.nama') ->select('kabupatens.nama', 'data_latih.kasus_2023') ->orderByDesc('data_latih.kasus_2023') ->take(5) ->get(); // Ambil tahun-tahun yang tersedia dari tabel 'kasus' $availableYears = DB::table('kasus') ->select('tahun') ->distinct() ->orderByDesc('tahun') ->pluck('tahun'); // Ambil tahun yang dipilih dari input user (jika ada), jika tidak pakai default $selectedYear = $request->input('year') ?? $tahunTerpilih; // Data kasus per bulan untuk tahun yang dipilih $kasusPerBulan = DB::table('kasus') ->select('bulan', DB::raw('SUM(jumlah_kasus) as total')) ->where('tahun', $selectedYear) ->groupBy('bulan') ->orderByRaw("FIELD(bulan, 'Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember')") ->get(); $bulanLabels = []; $totalKasus = []; foreach ($kasusPerBulan as $item) { $bulanLabels[] = $item->bulan; $totalKasus[] = $item->total; } // Data kasus per bulan untuk semua tahun (opsional, untuk perbandingan multiyear) $kasusPerBulanByYear = []; foreach ($availableYears as $year) { $kasusPerBulanByYear[$year] = DB::table('kasus') ->where('tahun', $year) ->orderByRaw("FIELD(bulan, 'Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember')") ->get(['bulan', 'jumlah_kasus']); } return view('admin.dashboard', compact( 'stats', 'kabupatens', 'jumlahKasusDataLatih', 'topKasus', 'bulanLabels', 'totalKasus', 'data_latih', 'kasusPerBulanByYear', 'availableYears', 'selectedYear', 'tahunTerpilih' )); } // Fungsi dashboard dengan filter tahun dinamis public function dashboard(Request $request) { $tahunTerpilih = $request->input('tahun', 2023); $data_latih = DB::table('data_latih')->get(); $stats = DB::table('data_latih') ->selectRaw(' ROUND(AVG(phbs), 2) AS persen_phbs_baik, ROUND(100 - AVG(phbs), 2) AS persen_phbs_tidak_baik, ROUND(AVG(imunisasi), 2) AS persen_imunisasi, ROUND(100 - AVG(imunisasi), 2) AS persen_tidak_imunisasi, ROUND(AVG(merokok), 2) AS persen_merokok, ROUND(100 - AVG(merokok), 2) AS persen_tidak_merokok ') ->first(); $jumlahKasusDataLatih = DB::table('data_latih')->sum('kasus_2023'); $kabupatens = DB::table('kabupatens') ->join('data_latih', 'kabupatens.nama', '=', 'data_latih.kecamatan') ->select('kabupatens.nama', 'kabupatens.latitude', 'kabupatens.longitude', 'data_latih.hipotesis') ->get(); $topKasus = DB::table('data_latih') ->join('kabupatens', 'data_latih.kecamatan', '=', 'kabupatens.nama') ->select('kabupatens.nama', 'data_latih.kasus_2023') ->orderByDesc('data_latih.kasus_2023') ->take(5) ->get(); $kasusPerBulan = DB::table('kasus') ->select('bulan', DB::raw('SUM(jumlah_kasus) as total')) ->where('tahun', $tahunTerpilih) ->groupBy('bulan') ->orderByRaw("FIELD(bulan, 'Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember')") ->get(); $bulanLabels = []; $totalKasus = []; foreach ($kasusPerBulan as $item) { $bulanLabels[] = $item->bulan; $totalKasus[] = $item->total; } $availableYears = DB::table('kasus') ->selectRaw('YEAR(tanggal) as year') ->distinct() ->orderBy('year', 'desc') ->pluck('year'); $selectedYear = 2023; // Sesuaikan defaultnya // Lalu tambahkan ke compact return view('admin.dashboard', compact( 'stats', 'kabupatens', 'jumlahKasusDataLatih', 'topKasus', 'bulanLabels', 'totalKasus', 'data_latih', 'tahunTersedia', 'tahunTerpilih', 'availableYears', 'selectedYear' )); } }