<?php
// /Controlador/Ctrl_Administrador/MySQL_Listar_Usuarios_DT.php
session_start();
header('Content-Type: application/json; charset=utf-8');

require_once '../Utilidades/Conexion_BD.php';

try {
  // (Opcional) verifica sesión
  if (!isset($_SESSION['usuario'])) {
    echo json_encode([]); exit;
  }

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

  // JOIN con tabla cargo (nombre exacto: "cargo")
  $sql = "
    SELECT
      u.id_usuario,
      u.usuario,
      u.nombre,
      u.apellido,
      u.correo,
      u.telefono,
      u.estado,
      u.fecha_estado_desde,
      u.motivo_estado,
      c.descripcion AS cargo_usuario
    FROM usuarios u
    LEFT JOIN cargo c ON c.id = u.id_cargo
    ORDER BY u.id_usuario ASC
  ";

  $res = $db->query($sql);
  if (!$res) throw new Exception($db->error);

  $rows = [];
  while ($row = $res->fetch_assoc()) {
    // Normaliza por si vienen nulls
    $rows[] = [
      'id_usuario'         => (int)$row['id_usuario'],
      'usuario'            => (string)$row['usuario'],
      'nombre'             => (string)$row['nombre'],
      'apellido'           => (string)$row['apellido'],
      'correo'             => (string)$row['correo'],
      'telefono'           => (string)$row['telefono'],
      'estado'             => (string)$row['estado'],
      'fecha_estado_desde' => $row['fecha_estado_desde'] ? substr($row['fecha_estado_desde'],0,10) : '',
      'motivo_estado'      => (string)($row['motivo_estado'] ?? ''),
      'cargo_usuario'      => (string)($row['cargo_usuario'] ?? '')
    ];
  }
  $res->free();
  $db->close();
  $conn->closeConnection();

  echo json_encode($rows, JSON_UNESCAPED_UNICODE);
} catch (Throwable $e) {
  // Devuelve arreglo vacío para DataTables, y logea si quieres
  echo json_encode([]);
}
