diff --git a/app/Filament/Resources/User/InviteResource.php b/app/Filament/Resources/User/InviteResource.php index 23e7589c..c8a6c3ec 100644 --- a/app/Filament/Resources/User/InviteResource.php +++ b/app/Filament/Resources/User/InviteResource.php @@ -48,7 +48,7 @@ class InviteResource extends Resource { return $table ->columns([ - Tables\Columns\TextColumn::make('id'), + Tables\Columns\TextColumn::make('id')->sortable(), Tables\Columns\TextColumn::make('inviter') ->label(__('invite.fields.inviter')) ->formatStateUsing(fn ($state) => username_for_admin($state)) @@ -87,22 +87,8 @@ class InviteResource extends Resource ->formatStateUsing(fn ($state) => format_datetime($state)) , ]) - ->filters([ - Tables\Filters\Filter::make('inviter') - ->form([ - Forms\Components\TextInput::make('inviter') - ->label(__('invite.fields.inviter')) - ->placeholder('UID') - , - ])->query(function (Builder $query, array $data) { - return $query->when($data['inviter'], fn (Builder $query, $value) => $query->where("inviter", $value)); - }) - , - Tables\Filters\SelectFilter::make('valid') - ->options(self::getYesNoOptions()) - ->label(__('invite.fields.valid')) - , - ]) + ->defaultSort('id', 'desc') + ->filters(self::getFilters()) ->actions([ // Tables\Actions\EditAction::make(), ]) @@ -126,4 +112,44 @@ class InviteResource extends Resource 'edit' => Pages\EditInvite::route('/{record}/edit'), ]; } + + private static function getFilters() + { + $filters = []; + $filters[] = Tables\Filters\Filter::make('inviter') + ->form([ + Forms\Components\TextInput::make('inviter') + ->label(__('invite.fields.inviter')) + ->placeholder('UID') + , + ])->query(function (Builder $query, array $data) { + return $query->when($data['inviter'], fn (Builder $query, $value) => $query->where("inviter", $value)); + }) + ; + $filters[] = Tables\Filters\SelectFilter::make('valid') + ->options(self::getYesNoOptions()) + ->label(__('invite.fields.valid')) + ; + $filters[] = Tables\Filters\Filter::make('time_invited_begin') + ->form([ + Forms\Components\DatePicker::make('time_invited_begin') + ->maxDate(now()) + ->label(__('invite.fields.time_invited_begin')) + , + ])->query(function (Builder $query, array $data) { + return $query->when($data['time_invited_begin'], fn (Builder $query, $value) => $query->where("time_invited", '>=', $value)); + }) + ; + $filters[] = Tables\Filters\Filter::make('time_invited_end') + ->form([ + Forms\Components\DatePicker::make('time_invited_end') + ->maxDate(now()) + ->label(__('invite.fields.time_invited_end')) + , + ])->query(function (Builder $query, array $data) { + return $query->when($data['time_invited_end'], fn (Builder $query, $value) => $query->where("time_invited", '<=', $value)); + }) + ; + return $filters; + } } diff --git a/include/constants.php b/include/constants.php index e5d84a99..e49a22d3 100644 --- a/include/constants.php +++ b/include/constants.php @@ -1,6 +1,6 @@ 'Registered email', 'invitee_register_username' => 'Registered username', 'expired_at' => 'hash expired at', + 'time_invited_begin' => 'Send time gte', + 'time_invited_end' => 'Send time lte', ], 'send_deny_reasons' => [ 'invite_system_closed' => 'Invite system is closed', diff --git a/resources/lang/zh_CN/invite.php b/resources/lang/zh_CN/invite.php index 5cd8d943..fa00ab8c 100644 --- a/resources/lang/zh_CN/invite.php +++ b/resources/lang/zh_CN/invite.php @@ -11,6 +11,8 @@ return [ 'invitee_register_email' => '注册用户邮箱', 'invitee_register_username' => '注册用户名', 'expired_at' => 'hash 过期时间', + 'time_invited_begin' => '发邀时间大于', + 'time_invited_end' => '发邀时间小于', ], 'send_deny_reasons' => [ 'invite_system_closed' => '邀请系统已关闭', diff --git a/resources/lang/zh_TW/invite.php b/resources/lang/zh_TW/invite.php index d2ab93ab..219cb4b3 100644 --- a/resources/lang/zh_TW/invite.php +++ b/resources/lang/zh_TW/invite.php @@ -11,6 +11,8 @@ return [ 'invitee_register_email' => '註冊用戶郵箱', 'invitee_register_username' => '註冊用戶名', 'expired_at' => 'hash 過期時間', + 'time_invited_begin' => '發邀時間大於', + 'time_invited_end' => '發邀時間小於', ], 'send_deny_reasons' => [ 'invite_system_closed' => '邀請系統已關閉',