🆙 More fixes 🆙

This commit is contained in:
Remco
2026-01-20 17:11:21 +01:00
parent a628b140c1
commit d3ef41c9dd
7 changed files with 97 additions and 16 deletions
@@ -15,6 +15,9 @@ use Filament\Schemas\Schema;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use App\Models\Game\Player\UserBadge;
use App\Models\User;
class BadgesRelationManager extends RelationManager
{
@@ -41,7 +44,7 @@ class BadgesRelationManager extends RelationManager
public function table(Table $table): Table
{
return $table
->modifyQueryUsing(fn ($query) => $query->latest('id'))
->modifyQueryUsing(fn (Builder $query) => $query->latest('id'))
->columns([
TextColumn::make('id')
->label(__('filament::resources.columns.id')),
@@ -56,10 +59,10 @@ class BadgesRelationManager extends RelationManager
IconColumn::make('slot_id')
->label(__('filament::resources.columns.equipped'))
->icon(fn ($record) => $record->slot_id > 0 ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle')
->icon(fn (UserBadge $record) => $record->slot_id > 0 ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle')
->colors([
'success' => fn (string $state) => $state > 0,
'danger' => fn (string $state) => $state <= 0,
'success' => fn ($state) => (int) $state > 0,
'danger' => fn ($state) => (int) $state <= 0,
]),
])
->filters([
@@ -71,7 +74,7 @@ class BadgesRelationManager extends RelationManager
$user = $livewire->getOwnerRecord();
$hasRconEnabled = config('hotel.rcon.enabled');
if (! $user->online) {
if (! ($user instanceof User) || ! $user->online) {
return;
}
@@ -86,7 +89,7 @@ class BadgesRelationManager extends RelationManager
$rcon = app(RconService::class);
$data = $action->getFormData();
$rcon->sendSafelyFromDashboard('sendBadge', [$user, $data['badge_code']], 'RCON: Failed to send the badge');
$rcon->sendSafelyFromDashboard('sendBadge', [$user, (string) ($data['badge_code'] ?? '')], 'RCON: Failed to send the badge');
}
$action->cancel();
@@ -97,17 +100,16 @@ class BadgesRelationManager extends RelationManager
->before(fn (DeleteAction $action, RelationManager $livewire) => self::onDeleteBadgeAction($action, $livewire)),
])
->toolbarActions([
DeleteBulkAction::make()
->before(fn (DeleteBulkAction $action, RelationManager $livewire) => self::onDeleteBadgeAction($action, $livewire)),
DeleteBulkAction::make(),
]);
}
public static function onDeleteBadgeAction(DeleteAction|DeleteBulkAction $action, RelationManager $livewire): void
public static function onDeleteBadgeAction(DeleteAction $action, RelationManager $livewire): void
{
$user = $livewire->getOwnerRecord();
$hasRconEnabled = config('hotel.rcon.enabled');
if (! $user->online) {
if (! ($user instanceof User) || ! $user->online) {
return;
}
@@ -120,9 +122,7 @@ class BadgesRelationManager extends RelationManager
->send();
} else {
$rcon = app(RconService::class);
$badge = $action instanceof DeleteAction
? $action->getRecord()?->badge_code
: $action->getRecords()->map(fn ($record) => $record->badge_code)->join(';');
$badge = $action->getRecord()?->badge_code ?? '';
$rcon->sendSafelyFromDashboard('removeBadge', [$user, $badge], 'RCON: Failed to remove the badge');
}
@@ -5,6 +5,7 @@ namespace App\Filament\Resources\User\Users\RelationManagers;
use App\Filament\Resources\Hotel\ChatlogPrivates\ChatlogPrivateResource;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Schema;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
class ChatLogPrivateRelationManager extends RelationManager
@@ -20,7 +21,27 @@ class ChatLogPrivateRelationManager extends RelationManager
public function table(Table $table): Table
{
return $table->columns(ChatlogPrivateResource::getTable())
return $table->columns([
TextColumn::make('sender.username')
->label(__('filament::resources.columns.sender'))
->toggleable()
->searchable(isIndividual: true),
TextColumn::make('receiver.username')
->label(__('filament::resources.columns.receiver'))
->toggleable()
->searchable(isIndividual: true),
TextColumn::make('message')
->label(__('filament::resources.columns.message'))
->limit(40)
->searchable(isIndividual: true),
TextColumn::make('timestamp')
->label(__('filament::resources.columns.executed_at'))
->dateTime('Y-m-d H:i')
->toggleable(),
])
->defaultSort('timestamp', 'desc');
}
}
@@ -5,6 +5,7 @@ namespace App\Filament\Resources\User\Users\RelationManagers;
use App\Filament\Resources\Hotel\ChatlogRooms\ChatlogRoomResource;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Schema;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
class ChatLogRelationManager extends RelationManager
@@ -20,7 +21,32 @@ class ChatLogRelationManager extends RelationManager
public function table(Table $table): Table
{
return $table->columns(ChatlogRoomResource::getTable())
return $table->columns([
TextColumn::make('room.name')
->label(__('filament::resources.columns.room'))
->toggleable()
->searchable(isIndividual: true),
TextColumn::make('sender.username')
->label(__('filament::resources.columns.sender'))
->toggleable()
->searchable(isIndividual: true),
TextColumn::make('receiver.username')
->label(__('filament::resources.columns.receiver'))
->toggleable()
->searchable(isIndividual: true),
TextColumn::make('message')
->label(__('filament::resources.columns.message'))
->limit(40)
->searchable(isIndividual: true),
TextColumn::make('timestamp')
->label(__('filament::resources.columns.executed_at'))
->dateTime('Y-m-d H:i')
->toggleable(),
])
->defaultSort('timestamp', 'desc');
}
}
@@ -279,7 +279,7 @@ class UserResource extends Resource
$formData['currency_5'] = $record->currency('diamonds');
$formData['currency_101'] = $record->currency('points');
if ($record->settings && is_object($record->settings)) {
if ($record->settings) {
$formData['allow_change_username'] = (bool) data_get($record->settings, 'can_change_name', false);
}