<?php
session_start();
require_once __DIR__ . '/../config/db_auto.php';
require_once __DIR__ . '/../config/paths.php';
require_once __DIR__ . '/secure_session.php';
// No es necesario llamar a secure_session_start() aquí porque ya se llamó en la línea 2
require_role(['administrador'], true); // Usar el modo AJAX

header('Content-Type: application/json');

$input = json_decode(file_get_contents('php://input'), true);

$alumnos_ids = $input['alumnos_ids'] ?? [];
$nuevo_grado_id = $input['nuevo_grado_id'] ?? null;
$anio_destino = $input['anio_destino'] ?? null; // Nuevo parámetro

if (empty($alumnos_ids) || !$nuevo_grado_id || !$anio_destino) {
    http_response_code(400);
    echo json_encode(['success' => false, 'error' => 'Datos incompletos: Se requieren alumnos, grado y año de destino.']);
    exit;
}

// Validar que los IDs sean numéricos
$alumnos_ids = array_filter($alumnos_ids, 'is_numeric');
$nuevo_grado_id = filter_var($nuevo_grado_id, FILTER_VALIDATE_INT);
$anio_destino = filter_var($anio_destino, FILTER_VALIDATE_INT);

if (empty($alumnos_ids) || !$nuevo_grado_id || !$anio_destino) {
    http_response_code(400);
    echo json_encode(['success' => false, 'error' => 'Datos inválidos: El grado y el año de destino deben ser números válidos.']);
    exit;
}

$pdo->beginTransaction();

try {
    // En lugar de actualizar el grado del alumno, creamos una pre-matrícula para el año de destino.
    // Usamos INSERT IGNORE para evitar errores si por alguna razón ya existe una matrícula para ese alumno y año.
    $sql = "
        INSERT IGNORE INTO matriculas (alumno_id, anio, grado_id, estado, fecha_matricula) 
        VALUES (?, ?, ?, 'PRE-INSCRITO', ?)
    ";
    $stmt = $pdo->prepare($sql);
    $fecha_preinscripcion = date('Y-m-d');
    $count = 0;

    foreach ($alumnos_ids as $alumno_id) {
        $stmt->execute([$alumno_id, $anio_destino, $nuevo_grado_id, $fecha_preinscripcion]);
        $count += $stmt->rowCount();
    }

    $pdo->commit();
    echo json_encode(['success' => true, 'message' => $count . ' alumnos han sido pre-inscritos para el año ' . $anio_destino . '.']);
} catch (Exception $e) {
    $pdo->rollBack();
    http_response_code(500);
    echo json_encode(['success' => false, 'error' => 'Error al actualizar la base de datos: ' . $e->getMessage()]);
}
