<?php

/**
 * Endpoint para obtener estadísticas de matrícula.
 * Devuelve el total de matrículas activas para el año en curso
 * y el desglose por cada grado.
 */

session_start();
header('Content-Type: application/json; charset=utf-8');

// 1. Seguridad: Verificar que el usuario esté autenticado
if (!isset($_SESSION['user_id'])) {
    http_response_code(403); // Forbidden
    echo json_encode(['error' => 'Acceso no autorizado.']);
    exit;
}

require_once __DIR__ . '/../config/db_auto.php';

$response = [
    'total_general' => 0,
    'por_curso' => []
];

try {
    // Obtener el año escolar desde la solicitud o usar el actual por defecto
    $anio_solicitado = isset($_GET['anio']) ? intval($_GET['anio']) : date('Y');

    // Validación básica: asegurar que sea un año razonable (ej. entre 2020 y 2030)
    if ($anio_solicitado < 2020 || $anio_solicitado > 2030) {
        $anio_solicitado = date('Y');
    }

    $anio_actual = $anio_solicitado;

    // 2. Consulta para el total general de matrículas activas
    $stmt_total = $pdo->prepare("
        SELECT COUNT(id) as total 
        FROM matriculas 
        WHERE estado = 'ACTIVA' AND anio = ?
    ");
    $stmt_total->execute([$anio_actual]);
    $total_result = $stmt_total->fetch(PDO::FETCH_ASSOC);
    if ($total_result) {
        $response['total_general'] = (int)$total_result['total'];
    }

    // 3. Consulta para el desglose por curso
    $stmt_cursos = $pdo->prepare("
        SELECT g.id, g.nombre, g.tipo_ensenanza_id, COUNT(m.id) as total
        FROM matriculas m
        JOIN grados g ON m.grado_id = g.id
        WHERE m.estado = 'ACTIVA' AND m.anio = ?
        GROUP BY g.id, g.nombre, g.tipo_ensenanza_id
        ORDER BY g.orden, g.nombre
    ");
    $stmt_cursos->execute([$anio_actual]);
    $response['por_curso'] = $stmt_cursos->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
    http_response_code(500);
    $response['error'] = 'Error en el servidor al consultar la base de datos: ' . $e->getMessage();
}

echo json_encode($response);
exit;
