user(); // Cari data mahasiswa berdasarkan user_id $mahasiswa = Mahasiswa::where('user_id', $user->id)->first(); // Jika mahasiswa ditemukan, cari data parameter $data = $mahasiswa ? Parameter::where('mahasiswa_id', $mahasiswa->id)->first() : null; // Siapkan state untuk infolist $state = [ 'status' => 'Belum Mengisi Form', 'hasil' => 'Belum Ada Hasil', 'keterangan' => 'Silahkan lengkapi form pendaftaran KIP-K terlebih dahulu.' ]; // Jika data ada, update state sesuai data di database if ($data) { $state['status'] = match($data->status) { 'valid' => 'Berkas Valid', 'tidak_valid' => 'Berkas Tidak Valid', 'belum_validasi' => 'Belum Divalidasi', default => 'Belum Mengisi Form' }; $state['hasil'] = match($data->hasil) { 'Diterima' => 'Diterima', 'Tidak Diterima' => 'Tidak Diterima', default => 'Belum Ada Hasil' }; $state['keterangan'] = match($data->status) { 'valid' => match($data->hasil) { 'Diterima' => 'Selamat! Anda telah diterima sebagai penerima KIP-K. Silahkan cek pengumuman resmi untuk informasi lebih lanjut.', 'Tidak Diterima' => 'Mohon maaf, Anda belum berhasil menjadi penerima KIP-K. Tetap semangat dan jangan menyerah!', default => 'Berkas Anda telah divalidasi. Hasil seleksi akan diumumkan segera.' }, 'tidak_valid' => "Berkas Anda tidak valid. Alasan: {$data->alasan_tidak_valid}", 'belum_validasi' => 'Berkas Anda sedang dalam proses validasi. Mohon tunggu informasi selanjutnya.', default => 'Silahkan lengkapi form pendaftaran KIP-K terlebih dahulu.' }; } return $infolist ->schema([ Section::make('Status Berkas') ->schema([ Grid::make(2) ->schema([ TextEntry::make('status') ->label('Status Berkas') ->badge() ->color(fn (string $state): string => match ($state) { 'Berkas Valid' => 'success', 'Berkas Tidak Valid' => 'danger', 'Belum Divalidasi' => 'warning', default => 'gray', }), TextEntry::make('hasil') ->label('Hasil Seleksi') ->badge() ->color(fn (string $state): string => match ($state) { 'Diterima' => 'success', 'Tidak Diterima' => 'danger', default => 'gray', }), ]), ]), Section::make('Keterangan') ->schema([ TextEntry::make('keterangan') ->label('Informasi Progres') ->markdown() ->columnSpanFull(), ]), ]) ->state($state); } protected function getHeaderActions(): array { $user = auth()->user(); $mahasiswa = Mahasiswa::with(['prodi', 'jurusan'])->where('user_id', $user->id)->first(); $data = $mahasiswa ? Parameter::where('mahasiswa_id', $mahasiswa->id)->first() : null; // if ($data && $data->status === 'valid' && $data->hasil === 'Diterima') { // return [ // Action::make('exportSurat') // ->label('Download Surat Keterangan') // ->icon('heroicon-o-document-arrow-down') // ->action(function () use ($mahasiswa) { // $pdf = PDF::loadView('surat.keterangan', [ // 'mahasiswa' => $mahasiswa, // 'tanggal' => now()->format('Y-m-d'), // ]); // return response()->streamDownload(function () use ($pdf) { // echo $pdf->output(); // }, 'surat-k`eterangan-kipk.pdf'); // }) // ]; // } return []; } public static function shouldRegisterNavigation(): bool { return false; } public static function getNavigationItems(): array { return [ NavigationItem::make('Info') ->url(fn (): string => static::getUrl()) ->icon('heroicon-o-document-text') ->isActiveWhen(fn (): bool => request()->routeIs(static::getRouteName())) ->visible(fn (): bool => auth()->check() && auth()->user()->roles[0]->name == 'Mahasiswa'), ]; } }