recordTitleAttribute('e_catalog') ->columns([ TextColumn::make('partnerMedia.name') ->label('Media') ->searchable() ->visible(! auth()->user()->hasRole('Perusahaan')), TextColumn::make('e_catalog') ->label('E-Catalog') ->url(fn (\App\Models\CooperationProposal $record): ?string => $record->e_catalog) ->openUrlInNewTab() ->color('primary'), TextColumn::make('description') ->label('Deskripsi'), TextColumn::make('status') ->label('Status') ->badge(), TextColumn::make('submitted_at') ->label('Diajukan') ->dateTime('l, d F Y H:i:s') ->sortable(), TextColumn::make('responded_at') ->label('Ditanggapi') ->dateTime('l, d F Y H:i:s') ->sortable(), TextColumn::make('rejectionReasons.reason') ->label('Alasan Penolakan') ->searchable(), ]) ->filters([]) ->headerActions([]) ->recordActions([ ViewAction::make(), AcceptAction::make('accept'), RejectAction::make('reject'), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]); } public function infolist(Schema $infolist): Schema { return $infolist ->components([ Grid::make(2) ->schema([ TextEntry::make('partnerMedia.name') ->label('Media') ->visible(! auth()->user()->hasRole('Perusahaan')), TextEntry::make('status') ->label('Status') ->badge(), TextEntry::make('submitted_at') ->label('Diajukan') ->dateTime('l, d F Y H:i:s'), TextEntry::make('responded_at') ->label('Ditanggapi') ->dateTime('l, d F Y H:i:s'), ]), TextEntry::make('e_catalog') ->label('E-Catalog') ->url(fn (\App\Models\CooperationProposal $record): ?string => $record->e_catalog) ->openUrlInNewTab() ->color('primary') ->visible(fn (\App\Models\CooperationProposal $record): ?string => $record->e_catalog), TextEntry::make('description') ->label('Deskripsi') ->columnSpanFull(), PdfViewerEntry::make('proposal_attachment') ->label('Lampiran Proposal') ->getStateUsing(fn (\App\Models\CooperationProposal $record): ?string => optional($record->getMedia('cooperations')->where('custom_properties.doc_type', 'proposal-attachment')->sortByDesc('created_at')->first())->getPathRelativeToRoot()) ->disk(config('filesystems.default')), TextEntry::make('rejectionReasons.reason') ->label('Alasan Penolakan') ->listWithLineBreaks() ->visible(fn (\App\Models\CooperationProposal $record): bool => $record->status === ApprovalStatus::REJECTED && $record->rejectionReasons->isNotEmpty()) ->columnSpanFull(), ]) ->columns(1); } }