66 lines
2.2 KiB
PHP
66 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\OjalPresillaResource\Pages;
|
|
|
|
use App\Filament\Resources\OjalPresillaResource;
|
|
use Filament\Actions;
|
|
use Filament\Resources\Pages\ListRecords;
|
|
use Filament\Tables;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Filament\Resources\Components\Tab;
|
|
|
|
class ListOjalPresillas extends ListRecords
|
|
{
|
|
protected static string $resource = OjalPresillaResource::class;
|
|
|
|
protected function getHeaderActions(): array
|
|
{
|
|
return [
|
|
Actions\CreateAction::make()
|
|
->label('Crear'),
|
|
];
|
|
}
|
|
|
|
public function getTabs(): array
|
|
{
|
|
return [
|
|
'todos' => Tab::make('Todos')
|
|
->badge(
|
|
\App\Models\Ojal::count() + \App\Models\Prensilla::count()
|
|
),
|
|
'ojales' => Tab::make('Ojales')
|
|
->badge(\App\Models\Ojal::count())
|
|
->modifyQueryUsing(fn ($query) => $query),
|
|
'prensillas' => Tab::make('Prensillas')
|
|
->badge(\App\Models\Prensilla::count())
|
|
->modifyQueryUsing(fn ($query) => $query->whereRaw('1=0')), // Vacío por defecto
|
|
];
|
|
}
|
|
|
|
protected function getTableQuery(): ?\Illuminate\Database\Eloquent\Builder
|
|
{
|
|
$activeTab = $this->activeTab ?? 'todos';
|
|
|
|
// Siempre retornar ojales como base, pero ajustar qué se muestra
|
|
if ($activeTab === 'prensillas') {
|
|
// Para mostrar prensillas, necesitamos cambiar el modelo dinámicamente
|
|
// Por limitaciones de Filament, mantener ojales pero filtrar a ninguno
|
|
return \App\Models\Ojal::query()->whereRaw('1=0');
|
|
}
|
|
|
|
return \App\Models\Ojal::query();
|
|
}
|
|
|
|
public function getTableRecordUrlUsing(): ?\Closure
|
|
{
|
|
return function (Model $record): ?string {
|
|
// Determinar a qué recurso redirigir según el tipo
|
|
if ($record instanceof \App\Models\Ojal) {
|
|
return \App\Filament\Resources\OjalResource::getUrl('edit', ['record' => $record]);
|
|
} else {
|
|
return \App\Filament\Resources\PrensillaResource::getUrl('edit', ['record' => $record]);
|
|
}
|
|
};
|
|
}
|
|
}
|