<?php

namespace {{ namespace }};

use {{ rootNamespace }}Http\Controllers\Controller;
use Illuminate\Http\Request;
use Yajra\DataTables\Facades\DataTables;
use Spatie\Permission\Models\Role;
// use App\Models\{{ class }}; // Descomentar si usas controller.model.api.stub

/**
 * @group {{ class }} Management
 *
 * APIs para gestionar la entidad {{ class }}.
 * Protegido por Spatie Permissions.
 */
class {{ class }} extends Controller
{
    /**
     * Constructor para inyectar protección de Spatie
     */
    public function __construct()
    {
        // El permiso se asume en formato snake_case: 'listar_entidad', 'crear_entidad', etc.
        // $this->middleware('permission:listar_' . strtolower('{{ class }}'))->only('index');
    }

    /**
     * Listar registros (Yajra DataTables)
     * * Retorna una colección procesada por Server-Side para alta concurrencia.
     * * @response 200 { "draw": 1, "recordsTotal": 5000, "recordsFiltered": 5000, "data": [...] }
     */
    public function index(Request $request)
    {
        if ($request->ajax()) {
            // $query = Modelo::query();
            // return DataTables::of($query)->toJson();
        }
        
        return abort(403, 'Solo peticiones AJAX permitidas para Yajra.');
    }

    /**
     * Almacenar nuevo registro
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Mostrar registro específico
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Actualizar registro
     */
    public function update(Request $request, string $id)
    {
        //
    }

    /**
     * Eliminar registro
     */
    public function destroy(string $id)
    {
        //
    }
}