<?php
session_start();
require_once __DIR__ . '/../config/db_auto.php';
require_once __DIR__ . '/system_logger.php';

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

$logger = SystemLogger::getInstance();

// 1. Verificar autenticación y rol
if (!isset($_SESSION['user_id'])) {
    echo json_encode(['success' => false, 'error' => 'No autenticado.']);
    exit;
}

$rol = strtolower($_SESSION['rol'] ?? '');
if ($rol !== 'administrador') {
    $logger->warning(
        'Intento de eliminación de alumno sin permisos',
        "Usuario: {$_SESSION['usuario']} ({$rol}) desde IP: " . ($_SERVER['REMOTE_ADDR'] ?? 'N/A')
    );
    echo json_encode(['success' => false, 'error' => 'No tienes permisos para realizar esta acción.']);
    exit;
}

$input = json_decode(file_get_contents('php://input'), true);
$alumno_id = $input['alumno_id'] ?? 0;

if (empty($alumno_id)) {
    echo json_encode(['success' => false, 'error' => 'ID de alumno no proporcionado.']);
    exit;
}

try {
    $pdo->beginTransaction();

    // La base de datos está configurada con ON DELETE CASCADE,
    // por lo que al eliminar un alumno, se eliminarán en cascada
    // los registros en `matriculas`, `social_alumno`, `salud_alumno` y `alumno_familiar`.
    $stmt = $pdo->prepare("DELETE FROM alumnos WHERE id = ?");
    $stmt->execute([$alumno_id]);

    $rowCount = $stmt->rowCount();

    $pdo->commit();

    if ($rowCount > 0) {
        $logger->data('Alumno eliminado permanentemente', "ID Alumno: $alumno_id por Usuario: {$_SESSION['usuario']}");
        echo json_encode(['success' => true]);
    } else {
        echo json_encode(['success' => false, 'error' => 'El alumno no fue encontrado o ya fue eliminado.']);
    }
} catch (Exception $e) {
    $pdo->rollBack();
    $logger->error('Error crítico al eliminar alumno', $e->getMessage() . " | ID Alumno: $alumno_id");
    echo json_encode(['success' => false, 'error' => 'Ocurrió un error en el servidor al intentar eliminar el alumno.']);
}
