<?php

namespace App\Http\Controllers;

use App\Models\AuditLog;
use App\Models\Role;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;

/**
 * Listado de solo lectura de {@see AuditLog} para revisión y soporte post-incidente.
 *
 * @todo Filtros por módulo, acción, rango de fechas y exportación CSV.
 */
class AuditLogController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    /** Staff ve todo el historial; organizador solo sus propias filas (`user_id`). */
    public function index(Request $request): View
    {
        $this->authorize('viewAny', AuditLog::class);

        $user = $request->user();
        $query = AuditLog::query()->with('user')->orderByDesc('created_at');

        if ($user && $user->hasRole(Role::SLUG_ORGANIZADOR)
            && ! $user->hasRole(Role::SLUG_SUPER_ADMIN)
            && ! $user->hasRole(Role::SLUG_ADMINISTRADOR)) {
            $query->where('user_id', $user->id);
        }

        // Listado en cliente con Bootstrap Table (tamaño de página 10/20/…); cap para no saturar memoria.
        $logs = $query->limit(1000)->get();

        return view('dashboard.audit-logs.index', compact('logs'));
    }
}
