find($requestId); if (! $verificationRequest) { CheerfulNotification::danger( 'Belum ketemu nih 🙌', 'Data verifikasi belum kami temukan. Coba sebentar lagi, ya.', ) ->send(); return; } try { DB::beginTransaction(); // Create review record VerificationReview::create([ 'verification_request_id' => $verificationRequest->id, 'reviewer_id' => auth()->id(), 'decision' => $decision, 'note' => $note, ]); // Update verification request status $newStatus = match ($decision) { DecisionAdmin::APPROVED => VerificationStatus::APPROVED, DecisionAdmin::NEED_REVISION => VerificationStatus::NEED_REVISION, DecisionAdmin::REJECTED => VerificationStatus::REJECTED, }; $verificationRequest->update([ 'status' => $newStatus, ]); DB::commit(); $actionLabel = match ($decision) { DecisionAdmin::APPROVED => 'disetujui', DecisionAdmin::NEED_REVISION => 'diminta revisi', DecisionAdmin::REJECTED => 'ditolak', }; CheerfulNotification::success( 'Berhasil Diproses! ✨', "Mantap! Verifikasi telah {$actionLabel} dan notifikasi sudah dikirim ke pengguna. Kerja bagus, Admin! 💪" ) ->send(); // Notify User $partnerUser = $verificationRequest->company?->user; if ($partnerUser) { $statusTitle = match ($decision) { DecisionAdmin::APPROVED => 'Horee! Verifikasi Disetujui 🎉', DecisionAdmin::NEED_REVISION => 'Yah, Ada Yang Perlu Direvisi nih 📝', DecisionAdmin::REJECTED => 'Maaf, Verifikasi Ditolak 😔', }; $body = match ($decision) { DecisionAdmin::APPROVED => 'Yeay! Pengajuan verifikasi perusahaan Anda telah disetujui. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami! 🎊', DecisionAdmin::NEED_REVISION => 'Ayo sedikit lagi! Admin meminta beberapa perbaikan pada pengajuan Anda agar bisa segera disetujui. 💪', DecisionAdmin::REJECTED => 'Yah, maaf banget... pengajuan verifikasi perusahaan Anda belum bisa kami terima saat ini. 💔', }; if ($note) { $body .= "\n\nCatatan Admin: {$note}"; } $partnerUser->notify(new BroadcastNotification([ 'title' => $statusTitle, 'body' => $body, 'action' => [ Action::make('view') ->label('Lihat') ->url(Verification::getUrl()), ], ])); } } catch (\Throwable $e) { DB::rollBack(); Log::error('Verification processing failed', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), 'request_id' => $requestId, 'decision' => $decision->value, ]); CheerfulNotification::danger( 'Terjadi Kesalahan ⚠️', 'Proses verifikasi gagal karena kesalahan sistem. Tim kami sudah mencatat masalah ini. Silakan coba lagi nanti.', ) ->send(); } } }