TIF_E41221524/app/Http/Controllers/DashboardController.php

71 lines
2.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Validasi;
use App\Models\PengajuanSurat;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class DashboardController extends Controller
{
/**
* DASHBOARD UNTUK ADMIN
*/
public function index()
{
// 1. Statistik Validasi Penduduk
$totalValidasi = Validasi::count();
// Gunakan array untuk menampung kemungkinan huruf besar/kecil pada status
$totalKtpMenunggu = Validasi::whereIn('status', ['menunggu', 'MENUNGGU'])->count();
// 2. Statistik Pengajuan Surat
$totalPengajuan = PengajuanSurat::count();
$totalMenungguSurat = PengajuanSurat::whereIn('status', ['menunggu', 'MENUNGGU'])->count();
// Data chart
$chartData = [
'validasi_ktp' => $totalValidasi,
'pengajuan' => $totalPengajuan,
'ktp_pending' => $totalKtpMenunggu,
'surat_pending' => $totalMenungguSurat,
];
// 3. Notifikasi Lonceng (Opsional jika sudah ada di AppServiceProvider)
// Tapi kita pastikan ambil data yang sama dengan AppServiceProvider agar sinkron
$notifikasiTerbaru = PengajuanSurat::with('user')
->whereIn('status', ['menunggu', 'MENUNGGU'])
->latest()
->take(5)
->get();
return view('dashboard', compact(
'totalValidasi',
'totalPengajuan',
'totalKtpMenunggu',
'totalMenungguSurat',
'chartData',
'notifikasiTerbaru'
));
}
/**
* DASHBOARD UNTUK USER
*/
public function indexUser()
{
$userId = Auth::id();
// Gunakan whereIn untuk menghindari error perbedaan case (besar/kecil) status di database
$totalMenunggu = PengajuanSurat::where('user_id', $userId)->whereIn('status', ['menunggu', 'MENUNGGU'])->count();
$totalDisetujui = PengajuanSurat::where('user_id', $userId)->whereIn('status', ['disetujui', 'DISETUJUI'])->count();
$totalDitolak = PengajuanSurat::where('user_id', $userId)->whereIn('status', ['ditolak', 'DITOLAK'])->count();
return view('user.dashboarduser', compact(
'totalMenunggu',
'totalDisetujui',
'totalDitolak'
));
}
}