columns([ TextColumn::make('id') ->label('ID') ->searchable(), TextColumn::make('status') ->badge() ->searchable(), TextColumn::make('game_username') ->searchable(), TextColumn::make('message') ->searchable(), TextColumn::make('reviewed_by') ->searchable(), TextColumn::make('server.name') ->searchable(), TextColumn::make('reviewed_at') ->dateTime() ->sortable(), TextColumn::make('created_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), TextColumn::make('updated_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ // ]) ->recordActions([ Action::make('accept') ->label('Accepter') ->icon(Heroicon::CheckCircle) ->color('success') ->requiresConfirmation() ->modalHeading('Accepter la demande') ->modalDescription(fn (AccessRequests $record): string => "Le joueur {$record->game_username} sera ajoute via RCON.") ->visible(fn (AccessRequests $record): bool => $record->status === AccessRequestStatus::PENDING) ->action(function (AccessRequests $record, AccessRequestApprover $approver): void { try { $approver->approve($record, Auth::user()); Notification::make() ->success() ->title('Demande acceptee') ->send(); } catch (Throwable $exception) { report($exception); Notification::make() ->danger() ->title('Acceptation impossible') ->body($exception->getMessage()) ->persistent() ->send(); } }), ViewAction::make(), EditAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ]), ]); } }