verificationService = app(VerificationService::class); } public function mount(): void { $user = auth()->user(); $this->company = $user->company; // Load unified verification request if ($this->company) { $this->verificationRequest = $this->company->verificationRequest() ->with(['reviews.reviewer']) ->latest() ->first(); } } /** * Get unified verification progress */ public function getVerificationProgress(): array { $progress = $this->verificationService->getVerificationProgress( $this->company, $this->verificationRequest ); // Add additional data for view $progress['missingDataButtons'] = $this->verificationService->getMissingDataButtons($this->company); $progress['alert'] = $this->verificationService->getAlertData($this->verificationRequest); $progress['lastSubmittedAt'] = $this->verificationRequest?->updated_at?->translatedFormat('l, d M Y H:i'); return $progress; } /** * Submit unified verification action */ public function submitVerificationAction(): Action { $progress = $this->getVerificationProgress(); return Action::make('submitVerification') ->label(fn (): string => $this->verificationRequest && $this->verificationRequest->status === VerificationStatus::NEED_REVISION ? 'Kirim Ulang' : 'Ajukan Verifikasi') ->icon('heroicon-o-paper-airplane') ->color('primary') ->requiresConfirmation() ->modalHeading('Ajukan Verifikasi') ->modalDescription(function () use ($progress): string { if (! $progress['isDataComplete']) { return 'Data belum lengkap. Silakan lengkapi terlebih dahulu: '.implode(', ', $progress['missingData']); } return 'Apakah Anda yakin ingin mengajukan verifikasi? Pastikan semua data sudah benar dan lengkap.'; }) ->modalSubmitActionLabel('Ya, Ajukan') ->visible(fn (): bool => $progress['canSubmit']) ->disabled(fn (): bool => ! $progress['isDataComplete']) ->action(function () use ($progress): void { if (! $progress['isDataComplete']) { Notification::make() ->title('Data Belum Lengkap') ->body('Silakan lengkapi data terlebih dahulu: '.implode(', ', $progress['missingData'])) ->danger() ->send(); return; } $isRevision = $this->verificationRequest && $this->verificationRequest->status === VerificationStatus::NEED_REVISION; $this->verificationRequest = $this->verificationService->submitVerification( $this->company, $this->verificationRequest ); Notification::make() ->title('Berhasil Diajukan! 🚀') ->body('Yeay! Pengajuan verifikasi Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! ✨') ->success() ->send(); User::superAdmin() ->get() ->each(function ($admin) use ($isRevision): void { $user = auth()->user(); $admin->notify(new BroadcastNotification([ 'title' => $isRevision ? 'Pembaruan Data Verifikasi ✨' : 'Ada Pengajuan Verifikasi Baru! 🚀', 'body' => $isRevision ? "Cihuy! {$user->name} baru saja memperbarui data verifikasi untuk perusahaan {$user->company->name}. Yuk, cek perubahannya!" : "Halo Admin! {$user->name} baru saja mengajukan verifikasi data untuk perusahaan {$user->company->name}. Segera diproses ya! 😊", 'action' => [ Action::make('view') ->label('Lihat') ->url(PartnerResource::getUrl('view', ['record' => $user])), ], ])); }); }); } public function getViewData(): array { return [ 'verificationProgress' => $this->getVerificationProgress(), ]; } }