<?php
session_start();
require_once 'includes/db.php';

// Verificar si el usuario está logueado
if (!isset($_SESSION['usuario_id'])) {
    echo '<tr><td colspan="4" class="text-center">Sesión no iniciada</td></tr>';
    exit();
}

// Función para depuración
function debug_to_file($message) {
    // Modificar ruta según tu sistema
    file_put_contents('c:/xampp/htdocs/jk/logs/debug.log', date('Y-m-d H:i:s') . ': ' . $message . PHP_EOL, FILE_APPEND);
}

// Registrar cada solicitud
debug_to_file("Búsqueda recibida: " . (isset($_POST['busqueda']) ? $_POST['busqueda'] : 'vacío'));

$db = new Database();

try {
    $busqueda = isset($_POST['busqueda']) ? trim($_POST['busqueda']) : '';
    debug_to_file("Término de búsqueda procesado: '$busqueda'");
    
    // Verificar columnas disponibles
    $campos_disponibles = "SHOW COLUMNS FROM clientes";
    $stmt_campos = $db->query($campos_disponibles);
    $columnas = $stmt_campos->fetchAll(PDO::FETCH_COLUMN, 0);
    
    debug_to_file("Columnas disponibles en tabla clientes: " . implode(", ", $columnas));
    
    // Verificar si existe la columna apellidos
    $tiene_apellidos = in_array('apellidos', $columnas);
    
    // Decidir si usar telefono_principal o algún otro campo disponible
    $campo_telefono = in_array('telefono_principal', $columnas) ? 'telefono_principal' : 
                      (in_array('telefono', $columnas) ? 'telefono' : 
                      (in_array('celular', $columnas) ? 'celular' : 'id_cliente'));
    
    debug_to_file("Campo telefónico a usar: $campo_telefono");
    debug_to_file("¿Tiene columna apellidos?: " . ($tiene_apellidos ? "Sí" : "No"));
    
    // Construir la consulta SQL base
    $sql_select = $tiene_apellidos 
        ? "SELECT 
            id_cliente as id, 
            nombre, 
            apellidos, 
            CONCAT(nombre, ' ', IFNULL(apellidos, '')) as nombre_completo,
            CONCAT(IFNULL(tipo_documento, ''), ' ', IFNULL(numero_documento, '')) as documento, 
            $campo_telefono as telefono_contacto"
        : "SELECT 
            id_cliente as id, 
            nombre,
            '' as apellidos, 
            nombre as nombre_completo,
            CONCAT(IFNULL(tipo_documento, ''), ' ', IFNULL(numero_documento, '')) as documento, 
            $campo_telefono as telefono_contacto";
    
    if (empty($busqueda)) {
        // Si no hay búsqueda, mostrar los primeros clientes
        $sql = "$sql_select 
                FROM clientes 
                WHERE estado = 1 
                ORDER BY nombre 
                LIMIT 30";
                
        $stmt = $db->query($sql);
    } else {
        // Con búsqueda, filtrar por nombre, apellidos y documento
        $busqueda_param = "%$busqueda%";
        
        // Construir filtros de búsqueda basados en columnas disponibles
        $filtros = ["nombre LIKE ?"];
        $params = [$busqueda_param];
        
        // Si existe la columna apellidos, incluirla en la búsqueda
        if ($tiene_apellidos) {
            $filtros[] = "apellidos LIKE ?";
            $params[] = $busqueda_param;
        }
        
        // Incluir documento en la búsqueda
        $filtros[] = "numero_documento LIKE ?";
        $params[] = $busqueda_param;
        
        // Agregar filtro de teléfono si existe
        if ($campo_telefono !== 'id_cliente') {
            $filtros[] = "$campo_telefono LIKE ?";
            $params[] = $busqueda_param;
        }
        
        $sql = "$sql_select
                FROM clientes 
                WHERE estado = 1 
                   AND (" . implode(" OR ", $filtros) . ")
                ORDER BY nombre
                LIMIT 30";
                
        $stmt = $db->prepare($sql);
        $stmt->execute($params);
    }
    
    debug_to_file("SQL ejecutada: $sql");
    
    // Obtener resultados
    $clientes = empty($busqueda) ? $stmt->fetchAll(PDO::FETCH_ASSOC) : $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    debug_to_file("Resultados encontrados: " . count($clientes));
    
    // Generar HTML
    if (count($clientes) > 0) {
        foreach ($clientes as $cliente) {
            // Sanitizar los datos
            $id = htmlspecialchars($cliente['id']);
            $nombre_completo = htmlspecialchars($cliente['nombre_completo']);
            $documento = htmlspecialchars($cliente['documento'] ?? '');
            $telefono = htmlspecialchars($cliente['telefono_contacto'] ?? '');
            
            echo '<tr data-id="' . $id . '" data-nombre="' . htmlspecialchars($nombre_completo, ENT_QUOTES) . '">';
            echo '<td>' . $nombre_completo . '</td>'; // Mostrar nombre y apellido juntos
            echo '<td>' . $documento . '</td>';
            echo '<td class="d-none d-md-table-cell">' . $telefono . '</td>';
            echo '<td class="d-none d-md-table-cell">';
            echo '<button type="button" class="btn btn-sm btn-primary btn-seleccionar-cliente" ';
            echo 'data-id="' . $id . '" data-nombre="' . htmlspecialchars($nombre_completo, ENT_QUOTES) . '">OK</button>';
            echo '</td>';
            echo '</tr>';
        }
    } else {
        echo '<tr><td colspan="4" class="text-center">No se encontraron clientes</td></tr>';
    }
} catch (Exception $e) {
    debug_to_file("ERROR: " . $e->getMessage());
    echo '<tr><td colspan="4" class="text-center">Error en la búsqueda: ' . htmlspecialchars($e->getMessage()) . '</td></tr>';
}

// Asegurar que se envíe todo el contenido
if (ob_get_level() > 0) {
    ob_end_flush();
}
?>
