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

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

$logger = SystemLogger::getInstance();

// Verificar autenticación y permisos
if (!isset($_SESSION['user_id']) || strtolower($_SESSION['rol']) !== 'administrador') {
    $logger->warning('Intento de eliminación de usuario sin permisos', 'Usuario: ' . ($_SESSION['usuario'] ?? 'N/A') . ', Rol: ' . ($_SESSION['rol'] ?? 'N/A'));
    http_response_code(403);
    echo json_encode(['success' => false, 'error' => 'No tienes permisos para esta acción']);
    exit;
}

try {
    $id = $_POST['id'] ?? null;
    if (!$id) {
        throw new Exception('No se proporcionó un ID de usuario.');
    }

    // Obtener información del usuario antes de eliminarlo
    $stmt_info = $pdo->prepare("SELECT usuario, rol FROM usuarios WHERE id = ?");
    $stmt_info->execute([$id]);
    $usuario_info = $stmt_info->fetch(PDO::FETCH_ASSOC);

    if (!$usuario_info) {
        throw new Exception('Usuario no encontrado.');
    }

    // Medida de seguridad: no permitir eliminar al usuario con ID 1 (superadmin)
    if ($id == 1) {
        $logger->warning('Intento de eliminar administrador principal', "ID: $id, Usuario: " . $usuario_info['usuario']);
        throw new Exception('No se puede eliminar al administrador principal.');
    }

    $stmt = $pdo->prepare("DELETE FROM usuarios WHERE id = ?");
    $stmt->execute([$id]);

    if ($stmt->rowCount() > 0) {
        $logger->critical('Usuario eliminado del sistema', "ID: $id, Usuario: " . $usuario_info['usuario'] . ", Rol: " . $usuario_info['rol']);
    }

    echo json_encode(['success' => true]);
} catch (Throwable $e) {
    $logger->error('Error al eliminar usuario', "Error: " . $e->getMessage() . ", ID: " . ($id ?? 'N/A'));
    http_response_code(400);
    echo json_encode(['success' => false, 'error' => $e->getMessage()]);
}
