From 21a8b01ac7c8fa71091acd5915f7951de82d2281 Mon Sep 17 00:00:00 2001 From: Alexander Gabriel Date: Wed, 3 Jun 2026 20:47:14 +0000 Subject: [PATCH] =?UTF-8?q?recordaction=20und=20filter=20f=C3=BCr=20todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/Todos/Tables/TodosTable.php | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/app/Filament/Resources/Todos/Tables/TodosTable.php b/app/Filament/Resources/Todos/Tables/TodosTable.php index a67c4d1..82e89c8 100644 --- a/app/Filament/Resources/Todos/Tables/TodosTable.php +++ b/app/Filament/Resources/Todos/Tables/TodosTable.php @@ -4,14 +4,17 @@ namespace App\Filament\Resources\Todos\Tables; use App\Models\Group; use App\Models\User; +use Filament\Actions\Action; use Filament\Actions\BulkActionGroup; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; +use Filament\Support\Icons\Heroicon; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\Filter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; class TodosTable { @@ -55,25 +58,36 @@ class TodosTable ->boolean(), ]) ->filters([ - Filter::make('mine')->label('von mir oder für mich') - ->default() - ->query(function (Builder $query) { - $query->where('user_id', filament()->auth()->user()->id) - ->orWhere('todoable_type', User::class)->where('todoable_id', filament()->auth()->user()->id) - ->orwhere('todoable_type', Group::class)->whereIn('todoable_id', User::find(filament()->auth()->user()->id)->groups()->get()->pluck('id')); - return $query; - }), Filter::make('alleoffenen') ->default() ->label('nicht erledigt') ->query(function (Builder $query) { - $query->where('done_date', null); + $query->whereNull('done_date'); + return $query; + }), + Filter::make('mine')->label('von mir oder für mich') + ->default() + ->query(function (Builder $query) { + $query->where(function (Builder $query) { + $query + ->orWhere('user_id', filament()->auth()->user()->id) + ->orWhere('todoable_type', User::class)->where('todoable_id', filament()->auth()->user()->id) + ->orwhere('todoable_type', Group::class)->whereIn('todoable_id', User::find(filament()->auth()->user()->id)->groups()->get()->pluck('id')); + return $query; + }); return $query; }), ]) ->recordActions([ - EditAction::make(), + Action::make('done') + ->iconButton() + ->icon(Heroicon::Check) + ->action(function (Model $record) { + $record->done_date = now()->today(); + $record->save(); + }), + EditAction::make()->iconButton(), ]) ->toolbarActions([ BulkActionGroup::make([