You've already forked Epicnabbo-Catalogus-Updated-Daily
🆙 More fixes 🆙
This commit is contained in:
+13
-13
@@ -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');
|
||||
}
|
||||
|
||||
+22
-1
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
+27
-1
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -275,4 +275,36 @@ class RconService
|
||||
{
|
||||
$this->closeConnection();
|
||||
}
|
||||
|
||||
public function sendSafelyFromDashboard(string $action, array $args, string $errorMessage): void
|
||||
{
|
||||
try {
|
||||
switch ($action) {
|
||||
case 'sendBadge':
|
||||
/** @var \App\Models\User $user */
|
||||
$user = $args[0];
|
||||
/** @var string $badge */
|
||||
$badge = (string) ($args[1] ?? '');
|
||||
$this->giveBadge($user, $badge);
|
||||
break;
|
||||
case 'removeBadge':
|
||||
// No direct RCON command defined for removing badges; use alert for now
|
||||
/** @var \App\Models\User $user */
|
||||
$user = $args[0];
|
||||
/** @var string $badge */
|
||||
$badge = (string) ($args[1] ?? '');
|
||||
$this->alertUser($user, sprintf('Badge %s removed.', $badge));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
\Filament\Notifications\Notification::make()
|
||||
->danger()
|
||||
->title('RCON Error')
|
||||
->body($errorMessage)
|
||||
->persistent()
|
||||
->send();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,5 +23,6 @@ parameters:
|
||||
- '#Unsafe usage of new static#'
|
||||
- '#uses generic trait .*HasFactory but does not specify its types#'
|
||||
- '#extends generic class .*Factory but does not specify its types#'
|
||||
- '#return type with generic class .*Builder does not specify its types#'
|
||||
|
||||
reportUnmatchedIgnoredErrors: false
|
||||
|
||||
@@ -73,3 +73,4 @@
|
||||
[2026-01-19 22:24:30] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
[2026-01-19 22:25:56] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
[2026-01-19 22:29:19] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
[2026-01-20 16:11:03] production.ERROR: RCON connection failed: Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd
|
||||
|
||||
Reference in New Issue
Block a user