🆙 More fixes 🆙

This commit is contained in:
Remco
2026-01-20 17:48:16 +01:00
parent 5b3645abba
commit 9a8fa8b1ff
7 changed files with 55 additions and 42 deletions
@@ -89,7 +89,9 @@ class BanResource extends Resource
->label(__('filament::resources.columns.reason'))
->tooltip(function (TextColumn $column): ?string {
$state = $column->getState();
if (! is_string($state)) {
return null;
}
if (strlen($state) <= $column->getCharacterLimit()) {
return null;
}
@@ -107,12 +109,14 @@ class BanResource extends Resource
'ip' => __('filament::resources.common.IP'),
'machine' => __('filament::resources.common.Machine'),
'super' => __('filament::resources.common.Super'),
default => __('filament::resources.common.Unknown'),
})
->color(fn (string $state): string => match ($state) {
'account' => 'primary',
'ip' => 'success',
'machine' => 'primary',
'super' => 'danger',
default => 'warning',
}),
TextColumn::make('timestamp')
@@ -121,7 +125,10 @@ class BanResource extends Resource
TextColumn::make('ban_expire')
->label(__('filament::resources.columns.expires_at'))
->formatStateUsing(fn (string $state): string => $state == 0 ? __('filament::resources.common.Never') : date('Y-m-d H:i', $state)),
->formatStateUsing(function (string $state): string {
$ts = is_numeric($state) ? (int) $state : 0;
return $ts === 0 ? __('filament::resources.common.Never') : date('Y-m-d H:i', $ts);
}),
])
->filters([
//
@@ -2,10 +2,9 @@
namespace App\Filament\Resources\User\Users\Pages;
use App\Enums\NotificationType;
use App\Filament\Resources\User\Users\UserResource;
use App\Models\User;
use App\Models\User\UserNotification;
use Illuminate\Support\Facades\DB;
use Filament\Actions\Action;
use Filament\Actions\CreateAction;
use Filament\Forms\Components\Select;
@@ -49,27 +48,32 @@ class ListUsers extends ListRecords
->default(false),
])
->action(function (array $data): void {
$notifications = collect();
$allUsersId = collect($data['users'])->values();
$senderId = $data['as_staff'] ? null : auth()->id();
$allUsersId = collect($data['users'] ?? [])->values();
$senderId = !empty($data['as_staff']) ? null : auth()->id();
if ($allUsersId->isEmpty()) {
$allUsersId = User::select('id')->get()->pluck('id');
}
$allUsersId->each(function ($userId) use ($senderId, $data, $notifications): void {
$notifications->push([
$rows = [];
$message = is_string($data['message'] ?? null) ? $data['message'] : '';
$url = is_string($data['url'] ?? null) ? $data['url'] : null;
$now = now();
$type = 'housekeeping_custom_message';
$allUsersId->each(function ($userId) use ($senderId, $message, $url, $now, $type, &$rows): void {
$rows[] = [
'sender_id' => $senderId,
'recipient_id' => $userId,
'type' => NotificationType::HousekeepingCustomMessage,
'message' => $data['message'],
'url' => $data['url'] ?? null,
'created_at' => now(),
'updated_at' => now(),
]);
'recipient_id' => is_numeric($userId) ? (int) $userId : null,
'type' => $type,
'message' => $message,
'url' => $url,
'created_at' => $now,
'updated_at' => $now,
];
});
UserNotification::insert($notifications->toArray());
if (! empty($rows)) {
DB::table('user_notifications')->insert($rows);
}
Notification::make()
->body(__('Notification sent successfully.'))