94 lines
3.7 KiB
PHP
94 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use Illuminate\Support\ServiceProvider;
|
|
use Illuminate\Pagination\Paginator;
|
|
use Illuminate\Support\Facades\View;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
public function register(): void
|
|
{
|
|
//
|
|
}
|
|
|
|
public function boot(): void
|
|
{
|
|
Paginator::useBootstrapFive();
|
|
|
|
View::composer('*', function ($view) {
|
|
if (Auth::check()) {
|
|
try {
|
|
$userId = Auth::id();
|
|
$userRole = Auth::user()->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
|
|
]);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
} |