user()->hasRole(RoleEnum::PERUSAHAAN->value)) { return $ownerRecord->cooperationMedia() ->whereHas('partnerMedia.company', function ($query) { $query->where('user_id', auth()->id()); }) ->accepted() ->exists(); } return true; } public static function getBadge(Model $ownerRecord, string $pageClass): ?string { $query = $ownerRecord->reports(); if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) { $query->whereHas('mediaTaskAssignment.partnerMedia.company', function ($q) { $q->where('user_id', auth()->id()); }); } return (string) $query->count(); } public function table(Table $table): Table { return $table ->columns([ ...RowIndexColumn::make(), TextColumn::make('mediaTaskAssignment.partnerMedia.name') ->label('Media') ->searchable() ->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)), TextColumn::make('title') ->label('Judul') ->searchable(), TextColumn::make('publication_date') ->label('Tanggal Publikasi') ->date('l, d F Y'), TextColumn::make('link') ->label('Link') ->limit(30) ->url(fn (Report $record): string => $record->link) ->openUrlInNewTab(), TextColumn::make('status') ->label('Status') ->badge(), SpatieMediaLibraryImageColumn::make('image') ->label('Gambar') ->collection('reports') ->imageHeight('240px'), TextColumn::make('rejectionReasons.reason') ->label('Alasan Penolakan') ->searchable(), ]) ->recordActions([ ExportReportPdfAction::make(), AcceptAction::make(), RejectAction::make(), ]) ->headerActions([ ExportAllReportsPdfAction::make(), SubmitReportAction::make(), ]) ->toolbarActions([]) ->emptyStateIcon(Heroicon::OutlinedInboxArrowDown) ->emptyStateHeading(fn () => CheerfulNotification::getByKey('cooperation.report_empty_heading')) ->emptyStateDescription(fn () => CheerfulNotification::getByKey('cooperation.report_empty')) ->modifyQueryUsing(function (Builder $query): void { $query->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $query): void { $query->whereHas('mediaTaskAssignment.partnerMedia.company', function (Builder $q): void { $q->where('user_id', auth()->id()); }); }); }); } }