Skip to content

Commit

Permalink
Merge pull request #5 from rmsramos/feature/CreateFilters
Browse files Browse the repository at this point in the history
create date filter
  • Loading branch information
rmsramos committed Sep 7, 2023
2 parents 04b0ae6 + dcd6c3c commit f764ca7
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions src/Resources/ActivitylogResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace Rmsramos\Activitylog\Resources;

use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Group;
use Filament\Forms\Components\KeyValue;
use Filament\Forms\Components\Placeholder;
Expand All @@ -13,8 +14,11 @@
use Filament\Tables\Columns\Column;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\ViewColumn;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
use Illuminate\Support\HtmlString;
use Illuminate\Support\Str;
use Rmsramos\Activitylog\ActivitylogPlugin;
Expand Down Expand Up @@ -157,6 +161,9 @@ public static function table(Table $table): Table
static::getCauserNameColumnCompoment(),
static::getPropertiesColumnCompoment(),
static::getCreatedAtColumnCompoment(),
])
->filters([
static::getDateFilterComponent(),
]);
}

Expand Down Expand Up @@ -228,6 +235,39 @@ public static function getCreatedAtColumnCompoment(): Column
->sortable();
}

public static function getDateFilterComponent(): Filter
{
return Filter::make('created_at')
->indicateUsing(function (array $data): array {
$indicators = [];

if ($data['created_from'] ?? null) {
$indicators['created_from'] = 'Created from '.Carbon::parse($data['created_from'])->toFormattedDateString();
}

if ($data['created_until'] ?? null) {
$indicators['created_until'] = 'Created until '.Carbon::parse($data['created_until'])->toFormattedDateString();
}

return $indicators;
})
->form([
DatePicker::make('created_from'),
DatePicker::make('created_until'),
])
->query(function (Builder $query, array $data): Builder {
return $query
->when(
$data['created_from'],
fn (Builder $query, $date): Builder => $query->whereDate('created_at', '>=', $date),
)
->when(
$data['created_until'],
fn (Builder $query, $date): Builder => $query->whereDate('created_at', '<=', $date),
);
});
}

public static function getPages(): array
{
return [
Expand Down

0 comments on commit f764ca7

Please sign in to comment.