<?php
require_once __DIR__ . '/../config/db_auto.php';
header('Content-Type: application/json');

// Buscar alumnos matriculados (opuesto a buscar_alumnos.php que busca preinscritos)
$q = trim($_GET['q'] ?? '');
$grado_id = intval($_GET['grado_id'] ?? 0);
$tipo_ensenanza_id = intval($_GET['tipo_ensenanza_id'] ?? 0);
$debug = $_GET['debug'] ?? false;

try {
    // Incluir solo alumnos YA matriculados este año (opuesto a buscar_alumnos.php)
    $anio_actual = date('Y');

    // Construir SQL base - BUSCAR SOLO MATRICULADOS
    $sql = "SELECT a.id as alumno_id, a.nombre, a.ap_paterno, a.ap_materno, a.run, g.nombre AS grado, g.tipo_ensenanza_id, m.id as matricula_id
    FROM alumnos a
    INNER JOIN matriculas m ON a.id = m.alumno_id
    INNER JOIN grados g ON m.grado_id = g.id
    WHERE m.anio = :anio_actual AND m.estado = 'ACTIVA'";

    $params = [':anio_actual' => $anio_actual];

    // Agregar filtros opcionales
    // Si hay grado_id, usar solo ese filtro (el grado ya implica el tipo de enseñanza)
    if ($grado_id) {
        $sql .= " AND m.grado_id = :grado_id";
        $params[':grado_id'] = $grado_id;
    } elseif ($tipo_ensenanza_id) {
        // Solo usar tipo_ensenanza_id si no hay grado_id específico
        $sql .= " AND g.tipo_ensenanza_id = :tipo_ensenanza_id";
        $params[':tipo_ensenanza_id'] = $tipo_ensenanza_id;
    }

    if ($q) {
        $sql .= " AND (a.nombre LIKE :q1 OR a.ap_paterno LIKE :q2 OR a.ap_materno LIKE :q3 OR a.run LIKE :q4)";
        $params[':q1'] = "%$q%";
        $params[':q2'] = "%$q%";
        $params[':q3'] = "%$q%";
        $params[':q4'] = "%$q%";
    }

    $sql .= " ORDER BY a.ap_paterno, a.ap_materno, a.nombre";

    // Limitar resultados si no hay filtros específicos
    if (!$q && !$grado_id && !$tipo_ensenanza_id) {
        $sql .= " LIMIT 50";
    } else if ($q && !$grado_id && !$tipo_ensenanza_id) {
        // Limitar búsquedas de texto sin otros filtros
        $sql .= " LIMIT 100";
    }

    if ($debug) {
        echo json_encode([
            'debug_sql' => $sql,
            'debug_params' => $params,
            'debug_q' => $q,
            'debug_grado_id' => $grado_id,
            'debug_tipo_ensenanza_id' => $tipo_ensenanza_id,
            'debug_filtro_aplicado' => $grado_id ? 'Solo grado_id' : ($tipo_ensenanza_id ? 'Solo tipo_ensenanza_id' : 'Sin filtros específicos'),
            'debug_GET' => $_GET
        ]);
        exit;
    }

    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);
    $alumnos = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Respuesta normal: siempre un array de alumnos matriculados
    echo json_encode($alumnos);
} catch (Throwable $e) {
    http_response_code(500);
    echo json_encode(['error' => 'Error interno: ' . $e->getMessage(), 'file' => __FILE__, 'line' => __LINE__]);
}
