From dff76ff4b18aee38d5700b30c855e043fd6defd2 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 23 Sep 2025 21:22:24 +0700 Subject: [PATCH] feat(outlet): add filter outlet by status --- app/Livewire/Datatable/OutletsTable.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/Livewire/Datatable/OutletsTable.php b/app/Livewire/Datatable/OutletsTable.php index 10475bc..319458a 100644 --- a/app/Livewire/Datatable/OutletsTable.php +++ b/app/Livewire/Datatable/OutletsTable.php @@ -2,6 +2,7 @@ namespace App\Livewire\Datatable; +use App\Enums\OutletStatus; use App\Models\Outlet; use App\Traits\Datatable\WithAppendColumn; use App\Traits\Datatable\WithConfiguration; @@ -11,6 +12,7 @@ use Rappasoft\LaravelLivewireTables\DataTableComponent; use Rappasoft\LaravelLivewireTables\Views\Column; use Rappasoft\LaravelLivewireTables\Views\Columns\ArrayColumn; +use Rappasoft\LaravelLivewireTables\Views\Filters\MultiSelectFilter; class OutletsTable extends DataTableComponent { @@ -116,4 +118,19 @@ public function builder(): Builder { return Outlet::select('id', 'name', 'phone_number', 'landmark', 'address', 'opening_hours', 'facilities', 'opened_date', 'closed_date', 'status'); } + + public function filters(): array + { + return [ + MultiSelectFilter::make('Status') + ->options( + collect(OutletStatus::cases()) + ->mapWithKeys(fn ($case) => [$case->value => $case->label()]) + ->toArray() + ) + ->filter(function (Builder $builder, array $values) { + $builder->whereIn('status', $values); + }), + ]; + } }