<?php 
// Start session at the beginning of the file
session_start();
error_reporting(E_ALL & ~E_NOTICE); 
include_once "utils_database.php";
include_once "utils.php";
require_once "session_check.php";

// Extract request variables with prefix
$prefix = "P";
foreach ($_REQUEST as $key => $value) {
    $varname = $prefix . '_' . $key;
    $$varname = $value;
}

$vMaxNroPalabras = 300; 
$vMaxNroPalabrasTitulo = 30; 

// Get user information if logged in
$vAreasUsuario = isset($_SESSION['usr']) ? getDatUser($_SESSION['usr'], 9) : '';
$vTipo = isset($_SESSION['usr']) ? getDatUser($_SESSION['usr'], 2) : '';
$vIdUsr = isset($_SESSION['usr']) ? getDatUser($_SESSION['usr'], 1) : '';


// Verificar si el usuario está logueado
if (!isset($_SESSION['usr'])) {
    // Usuario no logueado, redirigir a la página de login
    header("Location: login.php");
    exit(); // Importante: detener la ejecución después de la redirección
}
?>
<?php
// gestion_usuarios.php

// Incluir el archivo de utilidades de base de datos
require_once 'utils_database.php';

// Inicializar variables
$mensaje = '';
$tipo_mensaje = '';
$usuario_actual = null;
$ciudades = [];

// Función para obtener todos los usuarios
function getUsuarios() {
    $conn = Activarmysql();
    
    $query = "SELECT `id`, `tipousuario`, `usuario`, `contrasena`, `nombre`, `telefono`, 
              `correo`, `Idioma`, `edad`, `cedula`, `sexo`, `avatar`, 
              `activo`, `cargo`, `created_at`, `cod_ciudad` 
              FROM `tusuario` 
              ORDER BY `nombre`";
    
    $result = $conn->query($query);
    $usuarios = [];
    
    if ($result && $result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $usuarios[] = $row;
        }
    }
    
    $conn->close();
    return $usuarios;
}

// Función para obtener un usuario por ID
function getUsuario($id) {
    $conn = Activarmysql();
    
    $query = "SELECT * FROM `tusuario` WHERE `id` = ?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $result = $stmt->get_result();
    $usuario = null;
    
    if ($result && $result->num_rows > 0) {
        $usuario = $result->fetch_assoc();
    }
    
    $stmt->close();
    $conn->close();
    return $usuario;
}

// Función que devuelve la lista completa de países
function getPaises() {
    return [
        'AF' => 'Afganistán',
        'AL' => 'Albania',
        'DE' => 'Alemania',
        'AD' => 'Andorra',
        'AO' => 'Angola',
        'AI' => 'Anguila',
        'AQ' => 'Antártida',
        'AG' => 'Antigua y Barbuda',
        'SA' => 'Arabia Saudita',
        'DZ' => 'Argelia',
        'AR' => 'Argentina',
        'AM' => 'Armenia',
        'AW' => 'Aruba',
        'AU' => 'Australia',
        'AT' => 'Austria',
        'AZ' => 'Azerbaiyán',
        'BS' => 'Bahamas',
        'BD' => 'Bangladés',
        'BB' => 'Barbados',
        'BH' => 'Baréin',
        'BE' => 'Bélgica',
        'BZ' => 'Belice',
        'BJ' => 'Benín',
        'BM' => 'Bermudas',
        'BY' => 'Bielorrusia',
        'BO' => 'Bolivia',
        'BA' => 'Bosnia y Herzegovina',
        'BW' => 'Botsuana',
        'BR' => 'Brasil',
        'BN' => 'Brunéi',
        'BG' => 'Bulgaria',
        'BF' => 'Burkina Faso',
        'BI' => 'Burundi',
        'BT' => 'Bután',
        'CV' => 'Cabo Verde',
        'KH' => 'Camboya',
        'CM' => 'Camerún',
        'CA' => 'Canadá',
        'QA' => 'Catar',
        'TD' => 'Chad',
        'CL' => 'Chile',
        'CN' => 'China',
        'CY' => 'Chipre',
        'VA' => 'Ciudad del Vaticano',
        'CO' => 'Colombia',
        'KM' => 'Comoras',
        'CG' => 'Congo',
        'CD' => 'Congo (Rep. Dem.)',
        'KP' => 'Corea del Norte',
        'KR' => 'Corea del Sur',
        'CI' => 'Costa de Marfil',
        'CR' => 'Costa Rica',
        'HR' => 'Croacia',
        'CU' => 'Cuba',
        'CW' => 'Curazao',
        'DK' => 'Dinamarca',
        'DM' => 'Dominica',
        'EC' => 'Ecuador',
        'EG' => 'Egipto',
        'SV' => 'El Salvador',
        'AE' => 'Emiratos Árabes Unidos',
        'ER' => 'Eritrea',
        'SK' => 'Eslovaquia',
        'SI' => 'Eslovenia',
        'ES' => 'España',
        'US' => 'Estados Unidos',
        'EE' => 'Estonia',
        'ET' => 'Etiopía',
        'PH' => 'Filipinas',
        'FI' => 'Finlandia',
        'FJ' => 'Fiyi',
        'FR' => 'Francia',
        'GA' => 'Gabón',
        'GM' => 'Gambia',
        'GE' => 'Georgia',
        'GH' => 'Ghana',
        'GI' => 'Gibraltar',
        'GD' => 'Granada',
        'GR' => 'Grecia',
        'GL' => 'Groenlandia',
        'GP' => 'Guadalupe',
        'GU' => 'Guam',
        'GT' => 'Guatemala',
        'GF' => 'Guayana Francesa',
        'GG' => 'Guernsey',
        'GN' => 'Guinea',
        'GQ' => 'Guinea Ecuatorial',
        'GW' => 'Guinea-Bisáu',
        'GY' => 'Guyana',
        'HT' => 'Haití',
        'HN' => 'Honduras',
        'HK' => 'Hong Kong',
        'HU' => 'Hungría',
        'IN' => 'India',
        'ID' => 'Indonesia',
        'IQ' => 'Irak',
        'IR' => 'Irán',
        'IE' => 'Irlanda',
        'IS' => 'Islandia',
        'IL' => 'Israel',
        'IT' => 'Italia',
        'JM' => 'Jamaica',
        'JP' => 'Japón',
        'JE' => 'Jersey',
        'JO' => 'Jordania',
        'KZ' => 'Kazajistán',
        'KE' => 'Kenia',
        'KG' => 'Kirguistán',
        'KI' => 'Kiribati',
        'KW' => 'Kuwait',
        'LA' => 'Laos',
        'LS' => 'Lesoto',
        'LV' => 'Letonia',
        'LB' => 'Líbano',
        'LR' => 'Liberia',
        'LY' => 'Libia',
        'LI' => 'Liechtenstein',
        'LT' => 'Lituania',
        'LU' => 'Luxemburgo',
        'MO' => 'Macao',
        'MK' => 'Macedonia del Norte',
        'MG' => 'Madagascar',
        'MY' => 'Malasia',
        'MW' => 'Malaui',
        'MV' => 'Maldivas',
        'ML' => 'Malí',
        'MT' => 'Malta',
        'MA' => 'Marruecos',
        'MQ' => 'Martinica',
        'MU' => 'Mauricio',
        'MR' => 'Mauritania',
        'YT' => 'Mayotte',
        'MX' => 'México',
        'FM' => 'Micronesia',
        'MD' => 'Moldavia',
        'MC' => 'Mónaco',
        'MN' => 'Mongolia',
        'ME' => 'Montenegro',
        'MS' => 'Montserrat',
        'MZ' => 'Mozambique',
        'MM' => 'Myanmar',
        'NA' => 'Namibia',
        'NR' => 'Nauru',
        'NP' => 'Nepal',
        'NI' => 'Nicaragua',
        'NE' => 'Níger',
        'NG' => 'Nigeria',
        'NU' => 'Niue',
        'NO' => 'Noruega',
        'NC' => 'Nueva Caledonia',
        'NZ' => 'Nueva Zelanda',
        'OM' => 'Omán',
        'NL' => 'Países Bajos',
        'PK' => 'Pakistán',
        'PW' => 'Palaos',
        'PS' => 'Palestina',
        'PA' => 'Panamá',
        'PG' => 'Papúa Nueva Guinea',
        'PY' => 'Paraguay',
        'PE' => 'Perú',
        'PF' => 'Polinesia Francesa',
        'PL' => 'Polonia',
        'PT' => 'Portugal',
        'PR' => 'Puerto Rico',
        'GB' => 'Reino Unido',
        'CF' => 'República Centroafricana',
        'CZ' => 'República Checa',
        'DO' => 'República Dominicana',
        'RE' => 'Reunión',
        'RW' => 'Ruanda',
        'RO' => 'Rumania',
        'RU' => 'Rusia',
        'EH' => 'Sahara Occidental',
        'WS' => 'Samoa',
        'AS' => 'Samoa Americana',
        'BL' => 'San Bartolomé',
        'KN' => 'San Cristóbal y Nieves',
        'SM' => 'San Marino',
        'MF' => 'San Martín',
        'PM' => 'San Pedro y Miquelón',
        'VC' => 'San Vicente y las Granadinas',
        'SH' => 'Santa Elena',
        'LC' => 'Santa Lucía',
        'ST' => 'Santo Tomé y Príncipe',
        'SN' => 'Senegal',
        'RS' => 'Serbia',
        'SC' => 'Seychelles',
        'SL' => 'Sierra Leona',
        'SG' => 'Singapur',
        'SX' => 'Sint Maarten',
        'SY' => 'Siria',
        'SO' => 'Somalia',
        'LK' => 'Sri Lanka',
        'ZA' => 'Sudáfrica',
        'SD' => 'Sudán',
        'SS' => 'Sudán del Sur',
        'SE' => 'Suecia',
        'CH' => 'Suiza',
        'SR' => 'Surinam',
        'SJ' => 'Svalbard y Jan Mayen',
        'SZ' => 'Esuatini',
        'TH' => 'Tailandia',
        'TW' => 'Taiwán',
        'TZ' => 'Tanzania',
        'TJ' => 'Tayikistán',
        'IO' => 'Territorio Británico del Océano Índico',
        'TF' => 'Territorios Australes Franceses',
        'TL' => 'Timor Oriental',
        'TG' => 'Togo',
        'TK' => 'Tokelau',
        'TO' => 'Tonga',
        'TT' => 'Trinidad y Tobago',
        'TN' => 'Túnez',
        'TM' => 'Turkmenistán',
        'TR' => 'Turquía',
        'TV' => 'Tuvalu',
        'UA' => 'Ucrania',
        'UG' => 'Uganda',
        'UY' => 'Uruguay',
        'UZ' => 'Uzbekistán',
        'VU' => 'Vanuatu',
        'VE' => 'Venezuela',
        'VN' => 'Vietnam',
        'WF' => 'Wallis y Futuna',
        'YE' => 'Yemen',
        'DJ' => 'Yibuti',
        'ZM' => 'Zambia',
        'ZW' => 'Zimbabue'
    ];
}

// Función para crear un nuevo usuario
function crearUsuario($datos, $avatar_file) {
    $conn = Activarmysql();
    
    // Validar que el usuario no exista ya
    $query_check = "SELECT COUNT(*) as count FROM `tusuario` WHERE `usuario` = ?";
    $stmt_check = $conn->prepare($query_check);
    $stmt_check->bind_param("s", $datos['usuario']);
    $stmt_check->execute();
    $result_check = $stmt_check->get_result();
    $row_check = $result_check->fetch_assoc();
    
    if ($row_check['count'] > 0) {
        $stmt_check->close();
        $conn->close();
        return ['success' => false, 'mensaje' => 'El nombre de usuario ya existe. Por favor, elija otro.'];
    }
    
    $stmt_check->close();
    
    // Procesamiento de avatar
    $avatar_nombre = '';
    if ($avatar_file && $avatar_file['error'] == 0) {
        $upload_dir = 'dist/pages/evaluadores/acciones_evaluador/fotos_empleados/';
        if (!is_dir($upload_dir)) {
            mkdir($upload_dir, 0777, true);
        }
        
        $avatar_nombre = time() . '_' . basename($avatar_file['name']);
        $avatar_path = $upload_dir . $avatar_nombre;
        
        // Mover el archivo al directorio de destino
        if (!move_uploaded_file($avatar_file['tmp_name'], $avatar_path)) {
            return ['success' => false, 'mensaje' => 'Error al subir el avatar'];
        }
    }
    
    // Preparar la consulta
    $query = "INSERT INTO `tusuario` 
              (`tipousuario`, `usuario`, `contrasena`, `nombre`, `telefono`, `correo`, 
               `Idioma`, `edad`, `cedula`, `sexo`, `avatar`, `activo`, `cargo`, `cod_ciudad`, `created_at`) 
              VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())";
    
    $stmt = $conn->prepare($query);
    
    // Convertir valores vacíos a NULL para campos opcionales
    $telefono = empty($datos['telefono']) ? null : $datos['telefono'];
    $idioma = empty($datos['idioma']) ? null : $datos['idioma'];
    $edad = empty($datos['edad']) ? null : $datos['edad'];
    $cedula = empty($datos['cedula']) ? null : $datos['cedula'];
    $sexo = empty($datos['sexo']) ? null : $datos['sexo'];
    $cargo = empty($datos['cargo']) ? null : $datos['cargo'];
    $cod_ciudad = empty($datos['cod_ciudad']) ? null : $datos['cod_ciudad'];
    $activo = isset($datos['activo']) ? 1 : 0;
    
    $stmt->bind_param(
        "ssssssssssssss",
        $datos['tipousuario'],
        $datos['usuario'],
        $datos['contrasena'],
        $datos['nombre'],
        $telefono,
        $datos['correo'],
        $idioma,
        $edad,
        $cedula,
        $sexo,
        $avatar_nombre,
        $activo,
        $cargo,
        $cod_ciudad
    );
    
    $result = $stmt->execute();
    $id_insertado = $conn->insert_id;
    $error = $conn->error;
    
    $stmt->close();
    $conn->close();
    
    if ($result) {
        return ['success' => true, 'mensaje' => 'Usuario creado correctamente', 'id' => $id_insertado];
    } else {
        return ['success' => false, 'mensaje' => 'Error al crear el usuario: ' . $error];
    }
}

// Función para actualizar un usuario
function actualizarUsuario($id, $datos, $avatar_file) {
    $conn = Activarmysql();
    
    // Verificar si el usuario existe
    $query_check = "SELECT `usuario`, `avatar` FROM `tusuario` WHERE `id` = ?";
    $stmt_check = $conn->prepare($query_check);
    $stmt_check->bind_param("i", $id);
    $stmt_check->execute();
    $result_check = $stmt_check->get_result();
    
    if ($result_check->num_rows === 0) {
        $stmt_check->close();
        $conn->close();
        return ['success' => false, 'mensaje' => 'El usuario que intenta actualizar no existe'];
    }
    
    $usuario_actual = $result_check->fetch_assoc();
    $stmt_check->close();
    
    // Verificar si el nombre de usuario ya existe (solo si cambió)
    if ($usuario_actual['usuario'] !== $datos['usuario']) {
        $query_dup = "SELECT COUNT(*) as count FROM `tusuario` WHERE `usuario` = ? AND `id` != ?";
        $stmt_dup = $conn->prepare($query_dup);
        $stmt_dup->bind_param("si", $datos['usuario'], $id);
        $stmt_dup->execute();
        $result_dup = $stmt_dup->get_result();
        $row_dup = $result_dup->fetch_assoc();
        
        if ($row_dup['count'] > 0) {
            $stmt_dup->close();
            $conn->close();
            return ['success' => false, 'mensaje' => 'El nombre de usuario ya existe. Por favor, elija otro.'];
        }
        
        $stmt_dup->close();
    }
    
    // Procesamiento de avatar
    $avatar_nombre = $usuario_actual['avatar']; // Mantener el avatar actual por defecto
    
    if ($avatar_file && $avatar_file['error'] == 0) {
        $upload_dir = 'dist/pages/evaluadores/acciones_evaluador/fotos_empleados/';
        if (!is_dir($upload_dir)) {
            mkdir($upload_dir, 0777, true);
        }
        
        // Eliminar avatar anterior si existe
        if (!empty($avatar_nombre) && file_exists($upload_dir . $avatar_nombre)) {
            unlink($upload_dir . $avatar_nombre);
        }
        
        $avatar_nombre = time() . '_' . basename($avatar_file['name']);
        $avatar_path = $upload_dir . $avatar_nombre;
        
        // Mover el archivo al directorio de destino
        if (!move_uploaded_file($avatar_file['tmp_name'], $avatar_path)) {
            return ['success' => false, 'mensaje' => 'Error al subir el avatar'];
        }
    }
    
    // Convertir valores vacíos a NULL para campos opcionales
    $telefono = empty($datos['telefono']) ? null : $datos['telefono'];
    $idioma = empty($datos['idioma']) ? null : $datos['idioma'];
    $edad = empty($datos['edad']) ? null : $datos['edad'];
    $cedula = empty($datos['cedula']) ? null : $datos['cedula'];
    $sexo = empty($datos['sexo']) ? null : $datos['sexo'];
    $cargo = empty($datos['cargo']) ? null : $datos['cargo'];
    $cod_ciudad = empty($datos['cod_ciudad']) ? null : $datos['cod_ciudad'];
    $activo = isset($datos['activo']) ? 1 : 0;
    
    // Preparar la consulta
    $query = "UPDATE `tusuario` SET 
              `tipousuario` = ?, 
              `usuario` = ?, 
              `contrasena` = ?, 
              `nombre` = ?, 
              `telefono` = ?, 
              `correo` = ?, 
              `Idioma` = ?, 
              `edad` = ?, 
              `cedula` = ?, 
              `sexo` = ?, 
              `avatar` = ?, 
              `activo` = ?, 
              `cargo` = ?,
              `cod_ciudad` = ?
              WHERE `id` = ?";
    
    $stmt = $conn->prepare($query);
    $stmt->bind_param(
        "ssssssssssssssi",
        $datos['tipousuario'],
        $datos['usuario'],
        $datos['contrasena'],
        $datos['nombre'],
        $telefono,
        $datos['correo'],
        $idioma,
        $edad,
        $cedula,
        $sexo,
        $avatar_nombre,
        $activo,
        $cargo,
        $cod_ciudad,
        $id
    );
    
    $result = $stmt->execute();
    $error = $conn->error;
    
    $stmt->close();
    $conn->close();
    
    if ($result) {
        return ['success' => true, 'mensaje' => 'Usuario actualizado correctamente'];
    } else {
        return ['success' => false, 'mensaje' => 'Error al actualizar el usuario: ' . $error];
    }
}

// Función para eliminar un usuario
function eliminarUsuario($id) {
    $conn = Activarmysql();
    
    // Primero verificar si el usuario existe
    $query_check = "SELECT COUNT(*) as count, `avatar` FROM `tusuario` WHERE `id` = ?";
    $stmt_check = $conn->prepare($query_check);
    $stmt_check->bind_param("i", $id);
    $stmt_check->execute();
    $result_check = $stmt_check->get_result();
    $row = $result_check->fetch_assoc();
    
    if ($row['count'] == 0) {
        $stmt_check->close();
        $conn->close();
        return ['success' => false, 'mensaje' => 'El usuario que intenta eliminar no existe'];
    }
    
    // Guardar el avatar para eliminarlo después
    $avatar = $row['avatar'];
    $stmt_check->close();
    
    // Verificar si el usuario tiene trabajos asignados
    $query_trabajos = "SELECT COUNT(*) as count FROM `ttrabajo` 
                      WHERE `evaluador1` = ? OR `evaluador2` = ? OR `evaluador3` = ?";
    $stmt_trabajos = $conn->prepare($query_trabajos);
    $stmt_trabajos->bind_param("iii", $id, $id, $id);
    $stmt_trabajos->execute();
    $result_trabajos = $stmt_trabajos->get_result();
    $row_trabajos = $result_trabajos->fetch_assoc();
    
    if ($row_trabajos['count'] > 0) {
        $stmt_trabajos->close();
        $conn->close();
        return [
            'success' => false, 
            'mensaje' => 'No se puede eliminar este usuario porque tiene ' . $row_trabajos['count'] . ' trabajos asignados. Reasigne estos trabajos antes de eliminar el usuario.'
        ];
    }
    
    $stmt_trabajos->close();
    
    // Ahora eliminar el usuario
    $query = "DELETE FROM `tusuario` WHERE `id` = ?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $id);
    $result = $stmt->execute();
    $error = $conn->error;
    
    $stmt->close();
    $conn->close();
    
    if ($result) {
        // Eliminar el archivo de avatar si existe
        if (!empty($avatar)) {
            $avatar_path = 'dist/pages/evaluadores/acciones_evaluador/fotos_empleados/' . $avatar;
            if (file_exists($avatar_path)) {
                unlink($avatar_path);
            }
        }
        return ['success' => true, 'mensaje' => 'Usuario eliminado correctamente'];
    } else {
        return ['success' => false, 'mensaje' => 'Error al eliminar el usuario: ' . $error];
    }
}

// Función para duplicar un usuario
function duplicarUsuario($id) {
    $usuario_original = getUsuario($id);
    if (!$usuario_original) {
        return ['success' => false, 'mensaje' => 'El usuario que intenta duplicar no existe'];
    }
    
    $datos = [
        'tipousuario' => $usuario_original['tipousuario'],
        'usuario' => $usuario_original['usuario'] . '_copia',
        'contrasena' => $usuario_original['contrasena'],
        'nombre' => 'Copia de ' . $usuario_original['nombre'],
        'telefono' => $usuario_original['telefono'],
        'correo' => $usuario_original['correo'],
        'idioma' => $usuario_original['Idioma'],
        'edad' => $usuario_original['edad'],
        'cedula' => $usuario_original['cedula'],
        'sexo' => $usuario_original['sexo'],
        'activo' => $usuario_original['activo'],
        'cargo' => $usuario_original['cargo'],
        'cod_ciudad' => $usuario_original['cod_ciudad']
    ];
    
    // Crear nuevo usuario (sin avatar)
    return crearUsuario($datos, null);
}



// Procesar eliminación de usuario
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['eliminar_usuario'])) {
    $id = $_POST['id'];
    $resultado = eliminarUsuario($id);
    $mensaje = $resultado['mensaje'];
    $tipo_mensaje = $resultado['success'] ? 'success' : 'danger';
}

// Procesar duplicación de usuario
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['duplicar_usuario'])) {
    $id = $_POST['id'];
    $resultado = duplicarUsuario($id);
    $mensaje = $resultado['mensaje'];
    $tipo_mensaje = $resultado['success'] ? 'success' : 'danger';
    
    // Si la duplicación fue exitosa, redireccionar a la edición del nuevo usuario
    if ($resultado['success'] && isset($resultado['id'])) {
        header("Location: " . $_SERVER['PHP_SELF'] . "?editar=" . $resultado['id']);
        exit;
    }
}

// Procesar formulario de creación/actualización
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['guardar_usuario'])) {
    // Validar campos obligatorios
    $errores = [];
    
    if (empty($_POST['nombre'])) {
        $errores[] = "El nombre es obligatorio";
    }
    
    if (empty($_POST['usuario'])) {
        $errores[] = "El nombre de usuario es obligatorio";
    }
    
    if (empty($_POST['contrasena'])) {
        $errores[] = "La contraseña es obligatoria";
    }
    
    if (empty($_POST['correo'])) {
        $errores[] = "El correo electrónico es obligatorio";
    } elseif (!filter_var($_POST['correo'], FILTER_VALIDATE_EMAIL)) {
        $errores[] = "El formato del correo electrónico es inválido";
    }
    
    if (empty($_POST['tipousuario'])) {
        $errores[] = "El tipo de usuario es obligatorio";
    }
    
    if (!empty($errores)) {
        $mensaje = implode("<br>", $errores);
        $tipo_mensaje = 'danger';
    } else {
        $datos = [
            'tipousuario' => $_POST['tipousuario'],
            'usuario' => $_POST['usuario'],
            'contrasena' => $_POST['contrasena'],
            'nombre' => $_POST['nombre'],
            'telefono' => isset($_POST['telefono']) ? $_POST['telefono'] : '',
            'correo' => $_POST['correo'],
            'idioma' => isset($_POST['idioma']) ? $_POST['idioma'] : '',
            'edad' => isset($_POST['edad']) ? $_POST['edad'] : '',
            'cedula' => isset($_POST['cedula']) ? $_POST['cedula'] : '',
            'sexo' => isset($_POST['sexo']) ? $_POST['sexo'] : '',
            'activo' => isset($_POST['activo']) ? 1 : 0,
            'cargo' => isset($_POST['cargo']) ? $_POST['cargo'] : '',
            'cod_ciudad' => isset($_POST['cod_ciudad']) ? $_POST['cod_ciudad'] : ''
        ];
        
        $avatar_file = isset($_FILES['avatar']) && $_FILES['avatar']['size'] > 0 ? $_FILES['avatar'] : null;
        
        if (isset($_POST['id']) && !empty($_POST['id'])) {
            // Actualizar usuario existente
            $id = $_POST['id'];
            $resultado = actualizarUsuario($id, $datos, $avatar_file);
        } else {
            // Crear nuevo usuario
            $resultado = crearUsuario($datos, $avatar_file);
        }
        
        $mensaje = $resultado['mensaje'];
        $tipo_mensaje = $resultado['success'] ? 'success' : 'danger';
        
        // Si la operación fue exitosa, redireccionar al listado
        if ($resultado['success']) {
            if (!isset($_POST['id'])) {
                // Si es nuevo usuario, redireccionar a edición
                header("Location: " . $_SERVER['PHP_SELF'] . "?editar=" . $resultado['id'] . "&success=1");
                exit;
            } else {
                // Para actualizaciones, redireccionar al listado con mensaje de éxito
                header("Location: " . $_SERVER['PHP_SELF'] . "?success=1&mensaje=" . urlencode($mensaje));
                exit;
            }
        }
    }
}

// Cargar usuario para edición si se proporciona ID
if (isset($_GET['editar']) && !empty($_GET['editar'])) {
    $id = $_GET['editar'];
    $usuario_actual = getUsuario($id);
    if (!$usuario_actual) {
        $mensaje = "El usuario que intenta editar no existe.";
        $tipo_mensaje = "danger";
    }
}

// Procesar mensajes de éxito de redirección
if (isset($_GET['success']) && $_GET['success'] == '1') {
    $tipo_mensaje = 'success';
    $mensaje = isset($_GET['mensaje']) ? urldecode($_GET['mensaje']) : 'Operación completada con éxito';
}

// Obtener todos los usuarios
$usuarios = getUsuarios();

// Obtener lista de países
$paises = getPaises();

// Calcular estadísticas
$total_usuarios = count($usuarios);
$total_evaluadores = 0;
$total_administradores = 0;
$total_super = 0;
$total_activos = 0;

foreach ($usuarios as $usuario) {
    if ($usuario['tipousuario'] == 'E') $total_evaluadores++;
    if ($usuario['tipousuario'] == 'A') $total_administradores++;
    if ($usuario['tipousuario'] == 'S') $total_super++;
    if ($usuario['activo'] == 1) $total_activos++;
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Gestión de Usuarios</title>
    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
    <!-- DataTables CSS -->
    <link rel="stylesheet" href="https://cdn.datatables.net/1.13.4/css/dataTables.bootstrap5.min.css">
    <!-- Select2 CSS -->
    <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
    <!-- Toastr CSS -->
    <link href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css" rel="stylesheet" />
    <style>
        :root {
            --primary-color: #377970;
            --secondary-color: #2980b9;
            --success-color: #2ecc71;
            --danger-color: #e74c3c;
            --warning-color: #f39c12;
            --info-color: #3498db;
            --light-bg: #f8f9fa;
        }
        
        body {
            background-color: var(--light-bg);
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        
        .card {
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            margin-bottom: 2rem;
        }
        
        .card-header {
            background-color: var(--primary-color);
            color: white;
            border-radius: 10px 10px 0 0 !important;
            padding: 1rem;
            font-weight: 600;
        }
        
        .btn-primary {
            background-color: var(--primary-color);
            border-color: var(--primary-color);
        }
        
        .btn-primary:hover {
            background-color: var(--secondary-color);
            border-color: var(--secondary-color);
        }
        
        .btn-outline-primary {
            color: var(--primary-color);
            border-color: var(--primary-color);
        }
        
        .btn-outline-primary:hover {
            background-color: var(--primary-color);
            color: white;
        }
        
        .table-hover tbody tr:hover {
            background-color: rgba(55, 121, 112, 0.05);
        }
        
        .avatar-container {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            overflow: hidden;
            border: 2px solid var(--primary-color);
            display: inline-flex;
            align-items: center;
            justify-content: center;
            background-color: #e9ecef;
        }
        
        .avatar-container img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }
        
        .default-avatar {
            color: var(--primary-color);
            font-size: 1.2rem;
        }
        
        .form-avatar-preview {
            width: 150px;
            height: 150px;
            border-radius: 50%;
            overflow: hidden;
            border: 3px solid var(--primary-color);
            margin: 1rem auto;
            display: flex;
            align-items: center;
            justify-content: center;
            background-color: #e9ecef;
        }
        
        .form-avatar-preview img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }
        
        .form-check-input:checked {
            background-color: var(--primary-color);
            border-color: var(--primary-color);
        }
        
        /* Estilos para las pestañas */
        .nav-tabs .nav-link {
            color: #6c757d;
            font-weight: 500;
            border: none;
            border-bottom: 3px solid transparent;
            padding: 0.5rem 1rem;
            transition: all 0.3s;
        }
        
        .nav-tabs .nav-link.active {
            color: var(--primary-color);
            border-bottom: 3px solid var(--primary-color);
            background-color: transparent;
        }
        
        .nav-tabs .nav-link:hover:not(.active) {
            border-bottom: 3px solid #dee2e6;
        }
        
        /* Estilos para las badges */
        .badge {
            font-weight: 500;
            padding: 0.35em 0.65em;
            border-radius: 0.25rem;
        }
        
        .badge-evaluador {
            background-color: var(--info-color);
            color: white;
        }
        
        .badge-admin {
            background-color: var(--warning-color);
            color: white;
        }
        
        .badge-super {
            background-color: var(--danger-color);
            color: white;
        }
        
        /* Estilos para DataTables */
        .dataTables_wrapper .dataTables_length,
        .dataTables_wrapper .dataTables_filter {
            margin-bottom: 1rem;
        }
        
        .dataTables_wrapper .dataTables_info,
        .dataTables_wrapper .dataTables_paginate {
            margin-top: 1rem;
        }
        
        .dataTables_wrapper .dataTables_paginate .paginate_button.current {
            background: var(--primary-color);
            color: white !important;
            border: none;
        }
        
        .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
            background: var(--secondary-color);
            color: white !important;
            border: none;
        }
        
        /* Estilos para el Spinner */
        .loading-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(255, 255, 255, 0.8);
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 9999;
            display: none;
        }
        
        .spinner-container {
            text-align: center;
        }
        
        /* Mostrar/ocultar contraseña */
        .password-toggle {
            cursor: pointer;
            position: absolute;
            right: 10px;
            top: 10px;
            color: #6c757d;
        }
        
        .input-password-container {
            position: relative;
        }
        
        /* Estilos para las estadísticas */
        .stats-card {
            transition: all 0.3s ease;
            border-radius: 8px;
            padding: 1rem;
            margin-bottom: 1rem;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
        
        .stats-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
        }
        
        .stats-card .icon {
            font-size: 2rem;
            margin-bottom: 0.5rem;
        }
        
        .stats-card .stats-title {
            font-size: 0.9rem;
            color: #6c757d;
        }
        
        .stats-card .stats-value {
            font-size: 1.8rem;
            font-weight: bold;
            margin-bottom: 0;
        }
        
        /* Botones de acción */
        .btn-icon {
            width: 32px;
            height: 32px;
            padding: 0;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
            margin-right: 0.25rem;
        }
        
        /* Animación para los botones */
        .btn-action {
            transition: all 0.2s ease;
        }
        
        .btn-action:hover {
            transform: scale(1.1);
        }
/* Estilo para el selector de país */
        .country-flag {
            width: 20px;
            height: 15px;
            margin-right: 8px;
            vertical-align: middle;
        }
        
        /* Estilos para Select2 */
        .select2-container--default .select2-selection--single {
            height: 38px;
            padding: 5px;
            border: 1px solid #ced4da;
            border-radius: 0.25rem;
        }
        
        .select2-container--default .select2-selection--single .select2-selection__arrow {
            height: 36px;
        }
        
        .select2-container--default .select2-selection--single .select2-selection__rendered {
            line-height: 26px;
        }
        
        .select2-container--default .select2-results__option--highlighted[aria-selected] {
            background-color: var(--primary-color);
        }
        
        .select2-dropdown {
            border: 1px solid #ced4da;
        }
        
        .select2-search--dropdown .select2-search__field {
            border: 1px solid #ced4da;
            border-radius: 0.25rem;
            padding: 0.375rem 0.75rem;
        }
    </style>
</head>
<body>
    <!-- Overlay de carga -->
    <div class="loading-overlay" id="loadingOverlay">
        <div class="spinner-container">
            <div class="spinner-border text-primary" role="status" style="width: 3rem; height: 3rem;"></div>
            <p class="mt-2">Procesando, por favor espere...</p>
        </div>
    </div>

    <div class="container-fluid py-4">
        <div class="row justify-content-center">
            <div class="col-xl-11">
                <!-- Título y descripción -->
                <div class="d-flex justify-content-between align-items-center mb-4">
                    <div>
                        <h2 class="mb-0"><i class="fas fa-users me-2 text-primary"></i>Gestión de Usuarios</h2>
                        <p class="text-muted">Administre usuarios, evaluadores y permisos del sistema</p>
                    </div>
                    <nav aria-label="breadcrumb">
                        <ol class="breadcrumb mb-0">
                            <li class="breadcrumb-item"><a href="#"><i class="fas fa-home"></i> Inicio</a></li>
                            <li class="breadcrumb-item active" aria-current="page">Gestión de Usuarios</li>
                        </ol>
                    </nav>
                </div>
                
                <!-- Mensaje de Alerta -->
                <?php if (!empty($mensaje)): ?>
                    <div class="alert alert-<?php echo $tipo_mensaje; ?> alert-dismissible fade show" role="alert">
                        <?php echo $mensaje; ?>
                        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                    </div>
                <?php endif; ?>
                
                <!-- Tarjetas de estadísticas -->
                <div class="row mb-4">
                    <div class="col-md-3">
                        <div class="card stats-card bg-white">
                            <div class="text-primary icon"><i class="fas fa-users"></i></div>
                            <h3 class="stats-value"><?php echo $total_usuarios; ?></h3>
                            <div class="stats-title">Usuarios totales</div>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="card stats-card bg-white">
                            <div class="text-info icon"><i class="fas fa-user-check"></i></div>
                            <h3 class="stats-value"><?php echo $total_evaluadores; ?></h3>
                            <div class="stats-title">Evaluadores</div>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="card stats-card bg-white">
                            <div class="text-warning icon"><i class="fas fa-user-shield"></i></div>
                            <h3 class="stats-value"><?php echo $total_administradores+$total_super; ?></h3>
                            <div class="stats-title">Administradores</div>
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="card stats-card bg-white">
                            <div class="text-success icon"><i class="fas fa-user-check"></i></div>
                            <h3 class="stats-value"><?php echo $total_activos; ?></h3>
                            <div class="stats-title">Usuarios activos</div>
                        </div>
                    </div>
                </div>
                
                <!-- Pestañas -->
                <ul class="nav nav-tabs mb-4" id="myTab" role="tablist">
                    <li class="nav-item" role="presentation">
                        <button class="nav-link <?php echo !isset($usuario_actual) ? 'active' : ''; ?>" id="lista-tab" data-bs-toggle="tab" data-bs-target="#lista" type="button" role="tab" aria-controls="lista" aria-selected="<?php echo !isset($usuario_actual) ? 'true' : 'false'; ?>">
                            <i class="fas fa-list me-2"></i>Listado de Usuarios
                        </button>
                    </li>
                    <li class="nav-item" role="presentation">
                        <button class="nav-link <?php echo isset($usuario_actual) ? 'active' : ''; ?>" id="formulario-tab" data-bs-toggle="tab" data-bs-target="#formulario" type="button" role="tab" aria-controls="formulario" aria-selected="<?php echo isset($usuario_actual) ? 'true' : 'false'; ?>">
                            <i class="fas <?php echo isset($usuario_actual) ? 'fa-edit' : 'fa-plus-circle'; ?> me-2"></i>
                            <?php echo isset($usuario_actual) ? 'Editar Usuario' : 'Nuevo Usuario'; ?>
                        </button>
                    </li>
                </ul>
                
                <!-- Contenido de las Pestañas -->
                <div class="tab-content" id="myTabContent">
                    <!-- Tab: Listado de Usuarios -->
                    <div class="tab-pane fade <?php echo !isset($usuario_actual) ? 'show active' : ''; ?>" id="lista" role="tabpanel" aria-labelledby="lista-tab">
                        <div class="card">
                            <div class="card-header d-flex justify-content-between align-items-center">
                                <span><i class="fas fa-users me-2"></i>Listado de Usuarios</span>
                                <div>
                                    <button class="btn btn-sm btn-primary" id="btnNuevoUsuario">
                                        <i class="fas fa-plus me-1"></i> Nuevo Usuario
                                    </button>
                                    <button class="btn btn-sm btn-outline-secondary" onclick="window.location.reload()">
                                        <i class="fas fa-sync-alt me-1"></i> Actualizar
                                    </button>
                                </div>
                            </div>
                            <div class="card-body">
                                <div class="table-responsive">
                                    <table class="table table-hover" id="tablaUsuarios">
                                        <thead>
                                            <tr>
                                                <th scope="col">Avatar</th>
                                                <th scope="col">Nombre</th>
                                                <th scope="col">Usuario</th>
                                                <th scope="col">Tipo</th>
                                                <th scope="col">País</th>
                                                <th scope="col">Correo</th>
                                                <th scope="col">Teléfono</th>
                                                <th scope="col">Estado</th>
                                                <th scope="col">Acciones</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <?php foreach ($usuarios as $usuario): ?>
                                                <tr>
                                                    <td>
                                                        <div class="avatar-container">
                                                            <?php if (!empty($usuario['avatar'])): ?>
                                                                <img src="dist/pages/evaluadores/acciones_evaluador/fotos_empleados/<?php echo htmlspecialchars($usuario['avatar']); ?>" 
                                                                     alt="Avatar" 
                                                                     onerror="this.onerror=null; this.parentNode.innerHTML='<div class=\'default-avatar\'><i class=\'fas fa-user\'></i></div>';">
                                                            <?php else: ?>
                                                                <div class="default-avatar">
                                                                    <i class="fas fa-user"></i>
                                                                </div>
                                                            <?php endif; ?>
                                                        </div>
                                                    </td>
                                                    <td><?php echo htmlspecialchars($usuario['nombre']); ?></td>
                                                    <td><?php echo htmlspecialchars($usuario['usuario']); ?></td>
                                                    <td>
                                                        <?php if ($usuario['tipousuario'] == 'S'): ?>
                                                            <span class="badge bg-danger">Superadmin</span>
                                                        <?php elseif ($usuario['tipousuario'] == 'A'): ?>
                                                            <span class="badge bg-warning text-dark">Admin</span>
                                                        <?php elseif ($usuario['tipousuario'] == 'E'): ?>
                                                            <span class="badge bg-info">Evaluador</span>
                                                        <?php endif; ?>
                                                    </td>
                                                    <td>
                                                        <?php if (!empty($usuario['cod_ciudad'])): ?>
                                                            <?php if (isset($paises[$usuario['cod_ciudad']])): ?>
                                                                <img class="country-flag" src="https://flagcdn.com/16x12/<?php echo strtolower($usuario['cod_ciudad']); ?>.png" 
                                                                     alt="<?php echo $paises[$usuario['cod_ciudad']]; ?>">
                                                                <?php echo $paises[$usuario['cod_ciudad']]; ?>
                                                            <?php else: ?>
                                                                <?php echo $usuario['cod_ciudad']; ?>
                                                            <?php endif; ?>
                                                        <?php endif; ?>
                                                    </td>
                                                    <td><?php echo htmlspecialchars($usuario['correo']); ?></td>
                                                    <td><?php echo htmlspecialchars($usuario['telefono'] ?? ''); ?></td>
                                                    <td>
                                                        <?php if ($usuario['activo'] == 1): ?>
                                                            <span class="badge bg-success">Activo</span>
                                                        <?php else: ?>
                                                            <span class="badge bg-secondary">Inactivo</span>
                                                        <?php endif; ?>
                                                    </td>
                                                    <td>
                                                        <div class="d-flex">
                                                            <a href="?editar=<?php echo $usuario['id']; ?>" class="btn btn-sm btn-outline-primary btn-icon btn-action" title="Editar">
                                                                <i class="fas fa-edit"></i>
                                                            </a>
                                                            <button type="button" class="btn btn-sm btn-outline-success btn-icon btn-action" title="Duplicar" 
                                                                    onclick="confirmarDuplicar(<?php echo $usuario['id']; ?>, '<?php echo addslashes($usuario['nombre']); ?>')">
                                                                <i class="fas fa-copy"></i>
                                                            </button>
                                                            <button type="button" class="btn btn-sm btn-outline-danger btn-icon btn-action" title="Eliminar" 
                                                                    onclick="confirmarEliminar(<?php echo $usuario['id']; ?>, '<?php echo addslashes($usuario['nombre']); ?>')">
                                                                <i class="fas fa-trash-alt"></i>
                                                            </button>
                                                        </div>
                                                    </td>
                                                </tr>
                                            <?php endforeach; ?>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Tab: Formulario de Usuario -->
                    <div class="tab-pane fade <?php echo isset($usuario_actual) ? 'show active' : ''; ?>" id="formulario" role="tabpanel" aria-labelledby="formulario-tab">
                        <div class="card">
                            <div class="card-header">
                                <i class="fas <?php echo isset($usuario_actual) ? 'fa-edit' : 'fa-plus-circle'; ?> me-2"></i>
                                <?php echo isset($usuario_actual) ? 'Editar Usuario: ' . htmlspecialchars($usuario_actual['nombre']) : 'Nuevo Usuario'; ?>
                            </div>
                            <div class="card-body">
                                <form id="formUsuario" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data">
                                    <?php if (isset($usuario_actual)): ?>
                                        <input type="hidden" name="id" value="<?php echo $usuario_actual['id']; ?>">
                                    <?php endif; ?>
                                    
                                    <div class="row">
                                        <!-- Avatar -->
                                        <div class="col-md-4 text-center">
                                            <div class="form-avatar-preview" id="avatarPreview">
                                                <?php if (isset($usuario_actual) && !empty($usuario_actual['avatar'])): ?>
                                                    <img src="dist/pages/evaluadores/acciones_evaluador/fotos_empleados/<?php echo htmlspecialchars($usuario_actual['avatar']); ?>" 
                                                         alt="Avatar" 
                                                         onerror="this.onerror=null; this.parentNode.innerHTML='<div class=\'default-avatar\'><i class=\'fas fa-user fa-4x\'></i></div>';">
                                                <?php else: ?>
                                                    <div class="default-avatar">
                                                        <i class="fas fa-user fa-4x"></i>
                                                    </div>
                                                <?php endif; ?>
                                            </div>
                                            <div class="mb-3">
                                                <label for="avatar" class="form-label">Foto de Perfil</label>
                                                <input type="file" class="form-control" id="avatar" name="avatar" accept="image/*" onchange="mostrarVistaPrevia()">
                                                <div class="form-text">Formatos recomendados: JPG, PNG. Máx 2MB.</div>
                                            </div>
                                        </div>
                                        
                                        <!-- Datos de Usuario -->
                                        <div class="col-md-8">
                                            <div class="row">
                                                <!-- Tipo de Usuario -->
                                                <div class="col-md-4 mb-3">
                                                    <label for="tipousuario" class="form-label">Tipo de Usuario <span class="text-danger">*</span></label>
                                                    <select class="form-select" id="tipousuario" name="tipousuario" required>
                                                        <option value="">Seleccione...</option>
                                                        <option value="S" <?php echo (isset($usuario_actual) && $usuario_actual['tipousuario'] == 'S') ? 'selected' : ''; ?>>Superadministrador</option>
                                                        <option value="A" <?php echo (isset($usuario_actual) && $usuario_actual['tipousuario'] == 'A') ? 'selected' : ''; ?>>Administrador</option>
                                                        <option value="E" <?php echo (isset($usuario_actual) && $usuario_actual['tipousuario'] == 'E') ? 'selected' : ''; ?>>Evaluador</option>
                                                    </select>
                                                </div>
                                                
                                                <!-- Usuario -->
                                                <div class="col-md-4 mb-3">
                                                    <label for="usuario" class="form-label">Usuario <span class="text-danger">*</span></label>
                                                    <input type="text" class="form-control" id="usuario" name="usuario" required
                                                           value="<?php echo isset($usuario_actual) ? htmlspecialchars($usuario_actual['usuario']) : ''; ?>">
                                                </div>
                                                
                                                <!-- Contraseña -->
                                                <div class="col-md-4 mb-3">
                                                    <label for="contrasena" class="form-label">Contraseña <span class="text-danger">*</span></label>
                                                    <div class="input-password-container">
                                                        <input type="password" class="form-control" id="contrasena" name="contrasena" required
                                                               value="<?php echo isset($usuario_actual) ? htmlspecialchars($usuario_actual['contrasena']) : ''; ?>">
                                                        <span class="password-toggle" onclick="togglePassword()">
                                                            <i class="fas fa-eye" id="eyeIcon"></i>
                                                        </span>
                                                    </div>
                                                </div>
                                                
                                                <!-- Nombre Completo -->
                                                <div class="col-md-6 mb-3">
                                                    <label for="nombre" class="form-label">Nombre Completo <span class="text-danger">*</span></label>
                                                    <input type="text" class="form-control" id="nombre" name="nombre" required
                                                           value="<?php echo isset($usuario_actual) ? htmlspecialchars($usuario_actual['nombre']) : ''; ?>">
                                                </div>
                                                
                                                <!-- Cargo -->
                                                <div class="col-md-6 mb-3">
                                                    <label for="cargo" class="form-label">Cargo</label>
                                                    <input type="text" class="form-control" id="cargo" name="cargo"
                                                           value="<?php echo isset($usuario_actual) ? htmlspecialchars($usuario_actual['cargo']) : ''; ?>">
                                                </div>
                                                
                                                <!-- Teléfono -->
                                                <div class="col-md-4 mb-3">
                                                    <label for="telefono" class="form-label">Teléfono</label>
                                                    <input type="tel" class="form-control" id="telefono" name="telefono"
                                                           value="<?php echo isset($usuario_actual) ? htmlspecialchars($usuario_actual['telefono']) : ''; ?>">
                                                </div>
                                                
                                                <!-- Correo -->
                                                <div class="col-md-8 mb-3">
                                                    <label for="correo" class="form-label">Correo Electrónico <span class="text-danger">*</span></label>
                                                    <input type="email" class="form-control" id="correo" name="correo" required
                                                           value="<?php echo isset($usuario_actual) ? htmlspecialchars($usuario_actual['correo']) : ''; ?>">
                                                </div>
                                                
                                                <!-- Cédula -->
                                                <div class="col-md-4 mb-3">
                                                    <label for="cedula" class="form-label">Cédula</label>
                                                    <input type="text" class="form-control" id="cedula" name="cedula"
                                                           value="<?php echo isset($usuario_actual) ? htmlspecialchars($usuario_actual['cedula']) : ''; ?>">
                                                </div>
                                                
                                                <!-- Edad -->
                                                <div class="col-md-2 mb-3">
                                                    <label for="edad" class="form-label">Edad</label>
                                                    <input type="number" class="form-control" id="edad" name="edad" min="18" max="100"
                                                           value="<?php echo isset($usuario_actual) ? htmlspecialchars($usuario_actual['edad']) : ''; ?>">
                                                </div>
                                                
                                                <!-- Sexo -->
                                                <div class="col-md-2 mb-3">
                                                    <label for="sexo" class="form-label">Sexo</label>
                                                    <select class="form-select" id="sexo" name="sexo">
                                                        <option value="">Seleccione...</option>
                                                        <option value="M" <?php echo (isset($usuario_actual) && $usuario_actual['sexo'] == 'M') ? 'selected' : ''; ?>>Masculino</option>
                                                        <option value="F" <?php echo (isset($usuario_actual) && $usuario_actual['sexo'] == 'F') ? 'selected' : ''; ?>>Femenino</option>
                                                        <option value="O" <?php echo (isset($usuario_actual) && $usuario_actual['sexo'] == 'O') ? 'selected' : ''; ?>>Otro</option>
                                                    </select>
                                                </div>
                                                
                                                <!-- País -->
                                                <div class="col-md-4 mb-3">
                                                    <label for="cod_ciudad" class="form-label">País</label>
                                                    <select class="form-select" id="cod_ciudad" name="cod_ciudad">
                                                        <option value="">Seleccione un país...</option>
                                                        <?php foreach ($paises as $codigo => $nombre): ?>
                                                            <option value="<?php echo $codigo; ?>" 
                                                                <?php echo (isset($usuario_actual) && $usuario_actual['cod_ciudad'] == $codigo) ? 'selected' : ''; ?>>
                                                                <?php echo $nombre; ?>
                                                            </option>
                                                        <?php endforeach; ?>
                                                    </select>
                                                </div>

                                                <!-- Idioma -->
                                                <div class="col-md-4 mb-3">
                                                    <label for="idioma" class="form-label">Idioma</label>
                                                    <select class="form-select" id="idioma" name="idioma">
                                                        <option value="">Seleccione...</option>
                                                        <option value="es" <?php echo (isset($usuario_actual) && $usuario_actual['Idioma'] == 'es') ? 'selected' : ''; ?>>Español</option>
                                                        <option value="en" <?php echo (isset($usuario_actual) && $usuario_actual['Idioma'] == 'en') ? 'selected' : ''; ?>>Inglés</option>
                                                        <option value="fr" <?php echo (isset($usuario_actual) && $usuario_actual['Idioma'] == 'fr') ? 'selected' : ''; ?>>Francés</option>
                                                        <option value="pt" <?php echo (isset($usuario_actual) && $usuario_actual['Idioma'] == 'pt') ? 'selected' : ''; ?>>Portugués</option>
                                                    </select>
                                                </div>
                                                
                                                <!-- Estado (Activo/Inactivo) -->
                                                <div class="col-md-4 mb-3">
                                                    <div class="form-check form-switch mt-4">
                                                        <input class="form-check-input" type="checkbox" id="activo" name="activo" 
                                                               <?php echo (!isset($usuario_actual) || (isset($usuario_actual) && $usuario_actual['activo'] == 1)) ? 'checked' : ''; ?>>
                                                        <label class="form-check-label" for="activo">Usuario Activo</label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div class="row mt-4">
                                        <div class="col-12 d-flex justify-content-between">
                                            <a href="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" class="btn btn-secondary">
                                                <i class="fas fa-arrow-left me-2"></i>Cancelar
                                            </a>
                                            <button type="submit" name="guardar_usuario" class="btn btn-primary">
                                                <i class="fas fa-save me-2"></i>Guardar Usuario
                                            </button>
                                        </div>
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Modal de Confirmación de Eliminación -->
    <div class="modal fade" id="eliminarModal" tabindex="-1" aria-labelledby="eliminarModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header bg-danger text-white">
                    <h5 class="modal-title" id="eliminarModalLabel"><i class="fas fa-exclamation-triangle me-2"></i>Confirmar Eliminación</h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <p>¿Está seguro que desea eliminar al usuario <strong id="nombreUsuarioEliminar"></strong>?</p>
                    <p class="text-danger"><i class="fas fa-exclamation-circle me-2"></i>Esta acción no se puede deshacer.</p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" id="formEliminar">
                        <input type="hidden" name="id" id="idEliminar">
                        <button type="submit" name="eliminar_usuario" class="btn btn-danger">Eliminar</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Modal de Confirmación de Duplicación -->
    <div class="modal fade" id="duplicarModal" tabindex="-1" aria-labelledby="duplicarModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header bg-success text-white">
                    <h5 class="modal-title" id="duplicarModalLabel"><i class="fas fa-copy me-2"></i>Duplicar Usuario</h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <p>¿Desea crear una copia del usuario <strong id="nombreUsuarioDuplicar"></strong>?</p>
                    <p>Se creará un nuevo usuario con los mismos datos pero con un nombre de usuario diferente.</p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" id="formDuplicar">
                        <input type="hidden" name="id" id="idDuplicar">
                        <button type="submit" name="duplicar_usuario" class="btn btn-success">Duplicar</button>
                    </form>
                </div>
            </div>
        </div>
    </div>

    <!-- jQuery -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- Bootstrap Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
    <!-- DataTables JS -->
    <script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.13.4/js/dataTables.bootstrap5.min.js"></script>
    <!-- Select2 JS -->
    <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
    <!-- Toastr JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
    
    <script>
        // Inicializar DataTable
        $(document).ready(function() {
            $('#tablaUsuarios').DataTable({
                language: {
                    url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/es-ES.json'
                },
                responsive: true,
                order: [[1, 'asc']], // Ordenar por nombre
                columnDefs: [
                    { orderable: false, targets: [0, 8] } // Deshabilitar ordenación para columnas de avatar y acciones
                ]
            });
            
            // Botón para ir a nuevo usuario
            $('#btnNuevoUsuario').click(function() {
                // Cambiar a la pestaña de formulario
                $('#formulario-tab').tab('show');
                
                // También resetear la URL para evitar que quede con parámetro "editar"
                if (window.location.href.includes('?')) {
                    history.pushState({}, document.title, window.location.pathname);
                }
            });
            
            // Inicializar Select2 para el selector de país
            if ($('#cod_ciudad').length) {
                $('#cod_ciudad').select2({
                    templateResult: formatCountry,
                    templateSelection: formatCountry,
                    width: '100%',
                    placeholder: 'Seleccione un país...'
                });
            }
        });
        
        // Función para formatear países con banderas
        function formatCountry(country) {
            if (!country.id) {
                return country.text;
            }
            
            var $country = $(
                '<span><img src="https://flagcdn.com/16x12/' + country.id.toLowerCase() + '.png" class="country-flag" /> ' +
                country.text + '</span>'
            );
            
            return $country;
        }
        
        // Función para mostrar vista previa del avatar
        function mostrarVistaPrevia() {
            const input = document.getElementById('avatar');
            const preview = document.getElementById('avatarPreview');
            
            if (input.files && input.files[0]) {
                const reader = new FileReader();
                
                reader.onload = function(e) {
                    preview.innerHTML = `<img src="${e.target.result}" alt="Vista previa">`;
                }
                
                reader.readAsDataURL(input.files[0]);
            }
        }
        
        // Función para alternar visibilidad de la contraseña
        function togglePassword() {
            const passwordField = document.getElementById('contrasena');
            const eyeIcon = document.getElementById('eyeIcon');
            
            if (passwordField.type === 'password') {
                passwordField.type = 'text';
                eyeIcon.classList.remove('fa-eye');
                eyeIcon.classList.add('fa-eye-slash');
            } else {
                passwordField.type = 'password';
                eyeIcon.classList.remove('fa-eye-slash');
                eyeIcon.classList.add('fa-eye');
            }
        }
        
        // Función para confirmar eliminación
        function confirmarEliminar(id, nombre) {
            document.getElementById('idEliminar').value = id;
            document.getElementById('nombreUsuarioEliminar').textContent = nombre;
            
            const eliminarModal = new bootstrap.Modal(document.getElementById('eliminarModal'));
            eliminarModal.show();
        }
        
        // Función para confirmar duplicación
        function confirmarDuplicar(id, nombre) {
            document.getElementById('idDuplicar').value = id;
            document.getElementById('nombreUsuarioDuplicar').textContent = nombre;
            
            const duplicarModal = new bootstrap.Modal(document.getElementById('duplicarModal'));
            duplicarModal.show();
        }
        
        // Mostrar overlay de carga al enviar formularios
        document.addEventListener('DOMContentLoaded', function() {
            const formUsuario = document.getElementById('formUsuario');
            if (formUsuario) {
                formUsuario.addEventListener('submit', function() {
                    document.getElementById('loadingOverlay').style.display = 'flex';
                });
            }
            
            const formEliminar = document.getElementById('formEliminar');
            if (formEliminar) {
                formEliminar.addEventListener('submit', function() {
                    document.getElementById('loadingOverlay').style.display = 'flex';
                });
            }
            
            const formDuplicar = document.getElementById('formDuplicar');
            if (formDuplicar) {
                formDuplicar.addEventListener('submit', function() {
                    document.getElementById('loadingOverlay').style.display = 'flex';
                });
            }
        });
        
        // Configuración de Toastr para notificaciones
        toastr.options = {
            "closeButton": true,
            "progressBar": true,
            "positionClass": "toast-top-right",
            "showDuration": "300",
            "hideDuration": "1000",
            "timeOut": "5000",
            "extendedTimeOut": "1000",
            "showEasing": "swing",
            "hideEasing": "linear",
            "showMethod": "fadeIn",
            "hideMethod": "fadeOut"
        };
        
        // Mostrar notificaciones basadas en mensajes PHP
        <?php if (!empty($mensaje) && !empty($tipo_mensaje)): ?>
        $(document).ready(function() {
            <?php if ($tipo_mensaje == 'success'): ?>
            toastr.success('<?php echo addslashes($mensaje); ?>', 'Éxito');
            <?php elseif ($tipo_mensaje == 'danger' || $tipo_mensaje == 'error'): ?>
            toastr.error('<?php echo addslashes($mensaje); ?>', 'Error');
            <?php elseif ($tipo_mensaje == 'warning'): ?>
            toastr.warning('<?php echo addslashes($mensaje); ?>', 'Advertencia');
            <?php else: ?>
            toastr.info('<?php echo addslashes($mensaje); ?>', 'Información');
            <?php endif; ?>
        });
        <?php endif; ?>
    </script>
</body>
</html>