currentId(); return parent::getEloquentQuery() ->when($tenantId, fn ($q) => $q->where('company_id', $tenantId)); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('created_at')->label('Când')->dateTime('d.m.Y H:i')->sortable(), Tables\Columns\TextColumn::make('description')->label('Acțiune')->badge() ->colors([ 'success' => ['creat'], 'info' => ['modificat'], 'danger' => ['șters'], 'warning' => ['restaurat'], ]), Tables\Columns\TextColumn::make('subject_type') ->label('Tip') ->formatStateUsing(fn ($s) => $s ? class_basename($s) : '—'), Tables\Columns\TextColumn::make('subject_id')->label('ID')->placeholder('—'), Tables\Columns\TextColumn::make('causer.name')->label('De către')->placeholder('Sistem'), Tables\Columns\TextColumn::make('attribute_changes') ->label('Detalii') ->formatStateUsing(function ($state) { if (! $state) return '—'; $arr = is_string($state) ? json_decode($state, true) : $state; $changes = $arr['attributes'] ?? []; return collect($changes) ->map(fn ($v, $k) => "{$k}: " . (is_scalar($v) ? \Illuminate\Support\Str::limit((string)$v, 30) : '—')) ->take(3)->implode(', '); }) ->wrap(), ]) ->filters([ Tables\Filters\SelectFilter::make('description') ->label('Acțiune') ->options(['creat' => 'creat', 'modificat' => 'modificat', 'șters' => 'șters']), Tables\Filters\Filter::make('today') ->label('Astăzi') ->query(fn ($q) => $q->whereDate('created_at', today())), ]) ->defaultSort('created_at', 'desc') ->actions([]) ->paginated([25, 50, 100]); } public static function getPages(): array { return [ 'index' => Pages\ListActivities::route('/'), ]; } }