<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    include("../config/config.php");

    if (!$conexion) {
        die("Error en la conexión: " . mysqli_connect_error());
    }

    // Obtener y sanitizar los datos del formulario
    $id = trim($_POST['id']);
    $nombre = trim($_POST['nombre']);
    $edad = trim($_POST['edad']);
    $cedula = trim($_POST['cedula']);
    $sexo = trim($_POST['sexo']);
    $telefono = trim($_POST['telefono']);
    $correo = trim($_POST['correo']);
    $tipousuario = trim($_POST['tipousuario']);
    $usuario = trim($_POST['usuario']);
    $contrasena = trim($_POST['contrasena']);
    $Idioma = trim($_POST['Idioma']);
    $areas = trim($_POST['areas']);
    $activo = trim($_POST['activo']);
    $avatar = null;

    // Manejar el archivo de avatar
    if (isset($_FILES['avatar']) && $_FILES['avatar']['size'] > 0) {
        $archivoTemporal = $_FILES['avatar']['tmp_name'];
        $nombreArchivo = $_FILES['avatar']['name'];
        $extension = strtolower(pathinfo($nombreArchivo, PATHINFO_EXTENSION));

        // Validar tipo de archivo (ejemplo: solo imágenes)
        $tiposPermitidos = ['jpg', 'jpeg', 'png', 'gif'];
        if (!in_array($extension, $tiposPermitidos)) {
            die("Error: Solo se permiten imágenes JPG, JPEG, PNG y GIF.");
        }

        // Limitar el tamaño del archivo (ejemplo: 2MB)
        if ($_FILES['avatar']['size'] > 2 * 1024 * 1024) {
            die("Error: El archivo debe ser menor a 2MB.");
        }

        // Genera un nombre único y seguro para el archivo
        $dirLocal = "fotos_empleados";
        if (!is_dir($dirLocal)) {
            mkdir($dirLocal, 0755, true); // Crea el directorio si no existe
        }
        $nombreArchivo = substr(md5(uniqid(rand())), 0, 10) . "." . $extension;
        $rutaDestino = $dirLocal . '/' . $nombreArchivo;

        if (move_uploaded_file($archivoTemporal, $rutaDestino)) {
            $avatar = $nombreArchivo;
        } else {
            die("Error al mover el archivo de avatar.");
        }
    }

    // Comprobación de valores de entrada
    var_dump($id, $nombre, $edad, $cedula, $correo, $sexo, $telefono, $tipousuario, $usuario, $contrasena, $Idioma, $areas, $activo, $avatar);

    // Preparar la declaración SQL para evitar inyección SQL
    $sql = "UPDATE tusuario 
            SET nombre=?, edad=?, cedula=?, correo=?, sexo=?, telefono=?, tipousuario=?, usuario=?, contrasena=?, Idioma=?, areas=?, activo=?";
    
    if ($avatar !== null) {
        $sql .= ", avatar=?";
    }
    $sql .= " WHERE id=?";

    // Inicializa la declaración
    $stmt = $conexion->prepare($sql);
    if ($stmt === false) {
        die('Error en la preparación de la declaración: ' . htmlspecialchars($conexion->error));
    }

    // Vincula los parámetros
        if ($avatar !== null) {
            $stmt->bind_param("sissssssssisi", $nombre, $edad, $cedula, $correo, $sexo, $telefono, $tipousuario, $usuario, $contrasena, $Idioma, $areas, $activo, $avatar, $id);
        } else {
            $stmt->bind_param("sissssssssisi", $nombre, $edad, $cedula, $correo, $sexo, $telefono, $tipousuario, $usuario, $contrasena, $Idioma, $areas, $activo, $id);
        }


    // Ejecuta la declaración
    if ($stmt->execute()) {
        header("Location: ../");
        exit; // Asegúrate de llamar exit después de redireccionar
    } else {
        echo "Error al actualizar el registro: " . htmlspecialchars($stmt->error);
    }

    // Cierra la declaración
    $stmt->close();
}
?>
