<?php
session_start();
if(!isset($_SESSION['admin']) || ($_SESSION['rol'] ?? '') !== 'tics'){
    header("Location: login.php");
    exit;
}

if($_SERVER['REQUEST_METHOD'] !== 'POST'){
    header("Location: usuarios.php");
    exit;
}

include("conexion.php");

if(!validar_csrf($_POST['csrf_token'] ?? '')){
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'Token de seguridad inválido.'];
    header("Location: usuarios.php");
    exit;
}

$id = intval($_POST['id'] ?? 0);
$nombre_completo = sanitizar($_POST['nombre_completo'] ?? '');
$usuario = sanitizar($_POST['usuario'] ?? '');
$password = $_POST['password'] ?? '';
$rol = in_array($_POST['rol'] ?? '', ['admin', 'auxiliar', 'tics']) ? $_POST['rol'] : 'admin';

if($id <= 0 || empty($nombre_completo) || empty($usuario)){
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'Datos incompletos.'];
    header("Location: usuarios.php");
    exit;
}

// Verificar que el username no esté duplicado (para otro usuario)
$check = $conexion->prepare("SELECT id FROM usuarios WHERE usuario = ? AND id != ?");
$check->bind_param("si", $usuario, $id);
$check->execute();
if($check->get_result()->num_rows > 0){
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'Ese nombre de usuario ya está en uso.'];
    $check->close();
    header("Location: usuarios.php");
    exit;
}
$check->close();

// Si se proporcionó nueva contraseña, actualizarla
if(!empty($password)){
    if(strlen($password) < 6){
        $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'La contraseña debe tener al menos 6 caracteres.'];
        header("Location: usuarios.php");
        exit;
    }
    $password_hash = password_hash($password, PASSWORD_DEFAULT);
    $stmt = $conexion->prepare("UPDATE usuarios SET nombre_completo=?, usuario=?, password=?, rol=? WHERE id=?");
    $stmt->bind_param("ssssi", $nombre_completo, $usuario, $password_hash, $rol, $id);
} else {
    $stmt = $conexion->prepare("UPDATE usuarios SET nombre_completo=?, usuario=?, rol=? WHERE id=?");
    $stmt->bind_param("sssi", $nombre_completo, $usuario, $rol, $id);
}

if($stmt->execute()){
    unset($_SESSION['csrf_token']);
    $_SESSION['mensaje'] = ['tipo' => 'exito', 'texto' => 'Usuario actualizado correctamente.'];
} else {
    $_SESSION['mensaje'] = ['tipo' => 'error', 'texto' => 'Error al actualizar.'];
}

$stmt->close();
header("Location: usuarios.php");
exit;
?>
