<?php

namespace App\Filament\Resources\CreditResource\RelationManagers;

use App\Enums\CreditAuditEvent;
use App\Filament\Resources\CreditAuditLog\CreditAuditLogResource;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Auth;

class CreditAuditLogsRelationManager extends RelationManager
{
    protected static string $relationship = 'auditLogs';

    protected static ?string $title = 'Auditoría del Crédito';

    public function table(Table $table): Table   // ← NO STATIC
    {
        return $table
            ->columns([
                Tables\Columns\TextColumn::make('id')
                    ->label('#')
                    ->sortable(),

                Tables\Columns\TextColumn::make('user.name')
                    ->label('Usuario')
                    ->sortable()
                    ->searchable(),

                Tables\Columns\TextColumn::make('action')
                    ->label('Acción')
                    ->badge()
                    ->formatStateUsing(fn (string $state): string => CreditAuditEvent::tryFrom($state)?->label()
                        ?? ucfirst(str_replace('_', ' ', $state))
                    )
                    ->color(fn (string $state): string => CreditAuditEvent::tryFrom($state)?->color() ?? 'gray')
                    ->sortable(),

                Tables\Columns\TextColumn::make('created_at')
                    ->label('Fecha')
                    ->dateTime('d/m/Y H:i')
                    ->sortable(),
            ])
            ->defaultSort('created_at', 'desc')
            ->paginated([10, 25, 50])
            ->recordUrl(fn ($record) => CreditAuditLogResource::getUrl('view', ['record' => $record])
            )
            ->headerActions([])  // ❌ solo lectura
            ->actions([])        // sin Edit/Delete
            ->bulkActions([]);
    }

    public static function getEloquentQuery(): Builder  // este sí puede ser static
    {
        $query = parent::getEloquentQuery();
        $user = Auth::user();

        if ($user->isSuperAdmin()) {
            return $query;
        }

        return $query->where('company_id', $user->company_id);
    }
}
