71 lines
2.4 KiB
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'
|
|
));
|
|
}
|
|
} |