role; // Standardisasi status untuk query $statusTunggu = ['menunggu', 'Menunggu', 'MENUNGGU']; $statusSelesai = ['disetujui', 'ditolak', 'Disetujui', 'Ditolak', 'DISETUJUI', 'DITOLAK']; // --- 1. LOGIKA ADMIN --- // Mengambil total validasi dan pengajuan yang masuk (untuk lencana/badge admin) $totalValidasi = DB::table('validasi')->whereIn('status', $statusTunggu)->count(); $totalSuratMasuk = DB::table('pengajuan_surat')->whereIn('status', $statusTunggu)->count(); // Notifikasi untuk Admin (Surat yang perlu diproses) $notifikasiAdmin = DB::table('pengajuan_surat') ->select( 'id', 'created_at', 'jenis_surat as tipe', 'jenis_surat as name', // FIX: Tambahkan ini agar $notif->name tidak error 'status', DB::raw("'pengajuan.index' as rute") ) ->whereIn('status', $statusTunggu) ->latest() ->take(5) ->get(); // --- 2. LOGIKA USER --- // Notifikasi untuk User (Hasil dari pengajuan: Disetujui/Ditolak) $notifikasiUser = DB::table('pengajuan_surat') ->select( 'id', 'created_at', 'jenis_surat as tipe', 'jenis_surat as name', // FIX: Tambahkan ini agar $notif->name tidak error 'status', DB::raw("'user.pengajuan.index' as rute") ) ->where('user_id', $userId) ->whereIn('status', $statusSelesai) ->latest() ->take(5) ->get(); $totalNotifUser = DB::table('pengajuan_surat') ->where('user_id', $userId) ->whereIn('status', $statusSelesai) ->count(); // Kirim data ke semua View $view->with([ 'totalMenungguSurat' => $totalValidasi + $totalSuratMasuk, 'notifikasiTerbaru' => $notifikasiAdmin, 'notifikasiUser' => $notifikasiUser, 'totalNotifUser' => $totalNotifUser ]); } catch (\Exception $e) { // Fallback jika database belum migrasi atau error lainnya $view->with([ 'totalMenungguSurat' => 0, 'notifikasiTerbaru' => collect([]), 'notifikasiUser' => collect([]), 'totalNotifUser' => 0 ]); } } }); } }