<?php
include 'conexion.php';

// Verifica si las claves existen en $_POST antes de usarlas
$id = isset($_POST['id']) ? (int) $_POST['id'] : 0;
$nombres = isset($_POST['nombres']) ? trim($_POST['nombres']) : '';
$apellido_paterno = isset($_POST['apellido_paterno']) ? trim($_POST['apellido_paterno']) : '';
$apellido_materno = isset($_POST['apellido_materno']) ? trim($_POST['apellido_materno']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$telefono = isset($_POST['telefono']) ? trim($_POST['telefono']) : '';
$cargo = isset($_POST['cargo']) ? trim($_POST['cargo']) : '';
$tipo_documento = isset($_POST['tipo_documento']) ? trim($_POST['tipo_documento']) : '';
$numero_documento = isset($_POST['numero_documento']) ? trim($_POST['numero_documento']) : '';
$placa = isset($_POST['placa']) ? trim($_POST['placa']) : '';
$numero_cuadrilla = isset($_POST['numero_cuadrilla']) ? trim($_POST['numero_cuadrilla']) : '';
$zona_trabajo = isset($_POST['zona_trabajo']) ? trim($_POST['zona_trabajo']) : '';
$bodega = isset($_POST['bodega']) ? trim($_POST['bodega']) : '';

// Verifica que no haya campos vacíos
if ($id == 0 || empty($nombres) || empty($email) || empty($tipo_documento) || empty($numero_documento)) {
    echo json_encode(["status" => "error", "message" => "Datos incompletos"]);
    exit;
}

// Obtener los valores actuales del usuario antes de actualizar
$query_select = "SELECT nombres, apellido_paterno, apellido_materno, email, telefono, cargo, tipo_documento, numero_documento, placa, numero_cuadrilla, zona_trabajo, bodega FROM usuarios WHERE id=?";
$stmt_select = $conn->prepare($query_select);
$stmt_select->bind_param("i", $id);
$stmt_select->execute();
$result = $stmt_select->get_result();
$usuario_actual = $result->fetch_assoc();
$stmt_select->close();

// Verificar qué valores cambiaron
$historial_cambios = [];
if ($usuario_actual['nombres'] !== $nombres) {
    $historial_cambios[] = "Nombres: '{$usuario_actual['nombres']}' → '$nombres'";
}
if ($usuario_actual['apellido_paterno'] !== $apellido_paterno) {
    $historial_cambios[] = "Apellido Paterno: '{$usuario_actual['apellido_paterno']}' → '$apellido_paterno'";
}
if ($usuario_actual['apellido_materno'] !== $apellido_materno) {
    $historial_cambios[] = "Apellido Materno: '{$usuario_actual['apellido_materno']}' → '$apellido_materno'";
}
if ($usuario_actual['email'] !== $email) {
    $historial_cambios[] = "Email: '{$usuario_actual['email']}' → '$email'";
}
if ($usuario_actual['telefono'] !== $telefono) {
    $historial_cambios[] = "Teléfono: '{$usuario_actual['telefono']}' → '$telefono'";
}
if ($usuario_actual['cargo'] !== $cargo) {
    $historial_cambios[] = "Cargo: '{$usuario_actual['cargo']}' → '$cargo'";
}
if ($usuario_actual['tipo_documento'] !== $tipo_documento) {
    $historial_cambios[] = "Tipo Documento: '{$usuario_actual['tipo_documento']}' → '$tipo_documento'";
}
if ($usuario_actual['numero_documento'] !== $numero_documento) {
    $historial_cambios[] = "Número Documento: '{$usuario_actual['numero_documento']}' → '$numero_documento'";
}
if ($usuario_actual['placa'] !== $placa) {
    $historial_cambios[] = "Placa: '{$usuario_actual['placa']}' → '$placa'";
}
if ($usuario_actual['numero_cuadrilla'] !== $numero_cuadrilla) {
    $historial_cambios[] = "Número Cuadrilla: '{$usuario_actual['numero_cuadrilla']}' → '$numero_cuadrilla'";
}
if ($usuario_actual['zona_trabajo'] !== $zona_trabajo) {
    $historial_cambios[] = "Zona de Trabajo: '{$usuario_actual['zona_trabajo']}' → '$zona_trabajo'";
}
if ($usuario_actual['bodega'] !== $bodega) {
    $historial_cambios[] = "Bodega: '{$usuario_actual['bodega']}' → '$bodega'";
}

// Convertir los cambios en un solo string separado por comas
$cambios_realizados = implode(", ", $historial_cambios);

if (!empty($cambios_realizados)) {
    // Actualizar el usuario
    $query_update = "UPDATE usuarios SET 
        nombres=?, apellido_paterno=?, apellido_materno=?, email=?, telefono=?, cargo=?, 
        tipo_documento=?, numero_documento=?, placa=?, numero_cuadrilla=?, zona_trabajo=?, bodega=? 
        WHERE id=?";
    $stmt_update = $conn->prepare($query_update);
    $stmt_update->bind_param("ssssssssssssi", 
        $nombres, $apellido_paterno, $apellido_materno, $email, $telefono, $cargo, 
        $tipo_documento, $numero_documento, $placa, $numero_cuadrilla, $zona_trabajo, $bodega, $id);

    if ($stmt_update->execute()) {
        // Insertar en el historial de cambios
        $query_historial = "INSERT INTO historial_cambios (usuario_id, cambio) VALUES (?, ?)";
        $stmt_historial = $conn->prepare($query_historial);
        $stmt_historial->bind_param("is", $id, $cambios_realizados);
        $stmt_historial->execute();

        echo json_encode(["status" => "success", "message" => "Usuario actualizado con éxito"]);
    } else {
        echo json_encode(["status" => "error", "message" => "Error al actualizar usuario: " . $conn->error]);
    }

    $stmt_update->close();
    $stmt_historial->close();
} else {
    echo json_encode(["status" => "warning", "message" => "No se realizaron cambios"]);
}

$conn->close();
?>
