<?php
// ../../Controlador/Ctrl_Administrador/MySQL_Borrar_Usuario.php
session_start();
require_once '../Utilidades/Conexion_BD.php';

function respond_json($ok, $msg) {
  header('Content-Type: application/json; charset=utf-8');
  echo json_encode(['success'=>$ok, 'message'=>$msg, 'msg'=>$msg]);
  exit;
}

$ajax = isset($_POST['ajax']) || (isset($_GET['ajax']) && $_GET['ajax'] == '1');

if (!isset($_SESSION['usuario'])) {
  if ($ajax) respond_json(false, 'Sesión expirada.');
  $_SESSION['flash_error'] = 'Sesión expirada.';
  header('Location: ../../Vista/Administrador/Adm_Gestion_Usuarios.php'); exit;
}

$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
if (!$id) {
  if ($ajax) respond_json(false, 'ID inválido.');
  $_SESSION['flash_error'] = 'ID inválido.';
  header('Location: ../../Vista/Administrador/Adm_Gestion_Usuarios.php'); exit;
}

try {
  $conn = new Conexion_BD();
  $db   = $conn->getConnection();
  if (method_exists($db,'set_charset')) $db->set_charset('utf8mb4');

  $db->begin_transaction();

  // 1) Elimina dependencias (hijos) primero
  $stmt = $db->prepare("DELETE FROM usuario_estado_historial WHERE usuario_id=?");
  if (!$stmt) throw new Exception('Prepare historial: '.$db->error);
  $stmt->bind_param('i', $id);
  if (!$stmt->execute()) throw new Exception('Delete historial: '.$db->error);
  $stmt->close();

  // 2) Elimina el usuario
  $stmt = $db->prepare("DELETE FROM usuarios WHERE id_usuario=?");
  if (!$stmt) throw new Exception('Prepare usuario: '.$db->error);
  $stmt->bind_param('i', $id);
  if (!$stmt->execute()) throw new Exception('Delete usuario: '.$db->error);
  $stmt->close();

  $db->commit();
  $db->close();

  if ($ajax) respond_json(true, 'Usuario eliminado correctamente.');
  $_SESSION['flash_ok'] = 'Usuario eliminado correctamente.';
  header('Location: ../../Vista/Administrador/Adm_Gestion_Usuarios.php'); exit;

} catch (Throwable $e) {
  if (isset($db)) $db->rollback();
  if ($ajax) respond_json(false, 'Error en el servidor: '.$e->getMessage());
  $_SESSION['flash_error'] = 'Error en el servidor: '.$e->getMessage();
  header('Location: ../../Vista/Administrador/Adm_Gestion_Usuarios.php'); exit;
}
