From 018c5bf04e58e202fbe4de4a931af08b6e1bd644 Mon Sep 17 00:00:00 2001 From: tuxarmy Date: Sat, 4 Apr 2026 09:13:36 +0700 Subject: [PATCH] fix: ganti throw Exception di ActivityObserver dengan Filament Notification, guard creator null --- app/Observers/ActivityObserver.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/Observers/ActivityObserver.php b/app/Observers/ActivityObserver.php index a8a3ace..691eb87 100644 --- a/app/Observers/ActivityObserver.php +++ b/app/Observers/ActivityObserver.php @@ -5,6 +5,7 @@ namespace App\Observers; use App\Models\Activity; use App\Models\ActivityLog; use App\Services\NotificationService; +use Filament\Notifications\Notification; use Illuminate\Support\Facades\Auth; class ActivityObserver @@ -22,12 +23,18 @@ class ActivityObserver ]; if (isset($allowed[$old]) && ! in_array($new, $allowed[$old])) { - throw new \Exception("Transisi status dari {$old} ke {$new} tidak diizinkan."); + Notification::make()->title('Transisi tidak diizinkan') + ->body("Status tidak bisa diubah dari {$old} ke {$new}.") + ->danger()->send(); + $activity->status = $old; + return; } - // Wajib isi executed_at & execution_notes jika sudah approved dan mau ditandai selesai if ($new === 'approved' && $activity->wasChanged('executed_at') && empty($activity->execution_notes)) { - throw new \Exception('Catatan pelaksanaan wajib diisi.'); + Notification::make()->title('Catatan pelaksanaan wajib diisi') + ->danger()->send(); + $activity->executed_at = null; + return; } ActivityLog::create([ @@ -44,7 +51,7 @@ class ActivityObserver route('filament.admin.resources.activities.edit', $activity)); } - if (in_array($new, ['approved', 'rejected'])) { + if (in_array($new, ['approved', 'rejected']) && $activity->creator) { NotificationService::send( $activity->creator, $new === 'approved' ? 'Kegiatan Disetujui' : 'Kegiatan Ditolak',