<?php
header('Content-Type: application/json; charset=utf-8');

$query = isset($_GET['q']) ? trim($_GET['q']) : (isset($_POST['query']) ? trim($_POST['query']) : '');

if (empty($query) || mb_strlen($query) < 2) {
    echo json_encode([]);
    exit;
}

// Paso 1: Búsqueda en hopeui (FTS5)
$api_url = 'http://127.0.0.1/hopeui/tienda-v2/partials/search.php?q=' . urlencode($query) . '&per_page=24';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$resp = curl_exec($ch);
$st = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($resp === false || $st !== 200) {
    echo json_encode(['error' => true, 'message' => 'Error conectando a hopeui']);
    exit;
}

$data = json_decode($resp, true);
if (!is_array($data) || !isset($data['items'])) {
    echo json_encode([]);
    exit;
}

$items = $data['items'];
if (empty($items)) {
    echo json_encode(['items' => [], 'total' => 0]);
    exit;
}

// Paso 2: Obtener SKUs válidos para pedir stock en paralelo
$skus_to_fetch = [];
foreach ($items as $item) {
    $sku = $item['sku'] ?? '';
    if ($sku !== '') {
        $skus_to_fetch[$sku] = $item;
    }
}

// Paso 3: Requests paralelos a Digicorp para stock
$stock_data = [];
if (!empty($skus_to_fetch)) {
    // Crear múltiples handles curl
    $multi_handle = curl_multi_init();
    $handles = [];
    
    foreach (array_keys($skus_to_fetch) as $sku) {
        $ch = curl_init();
        $detailUrl = 'http://192.168.0.32:8080/api/producto/' . urlencode($sku);
        curl_setopt($ch, CURLOPT_URL, $detailUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 3); // Reducido de 2s original + overhead a 3s
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Internal-Key: digicorp-internal-2026']);
        curl_multi_add_handle($multi_handle, $ch);
        $handles[$sku] = $ch;
    }
    
    // Ejecutar todos los requests en paralelo
    $running = null;
    do {
        curl_multi_exec($multi_handle, $running);
        curl_multi_select($multi_handle, 0.1);
    } while ($running > 0);
    
    // Recoger resultados
    foreach ($handles as $sku => $ch) {
        $respD = curl_multi_getcontent($ch);
        if ($respD) {
            $detail = json_decode($respD, true);
            $stock_data[$sku] = [
                'stockCentro' => 0,
                'stockAlto' => 0,
                'stockLlojeta' => 0,
                'stockInterior' => 0,
            ];
            if (isset($detail['almacenStock']) && is_array($detail['almacenStock'])) {
                foreach ($detail['almacenStock'] as $alm) {
                    $id = $alm['idAlmacen'] ?? '';
                    $stk = (int)($alm['stock'] ?? 0);
                    if ($id === '170001') $stock_data[$sku]['stockCentro'] = $stk;
                    elseif ($id === '170002') $stock_data[$sku]['stockAlto'] = $stk;
                    elseif ($id === '170004') $stock_data[$sku]['stockLlojeta'] = $stk;
                    else $stock_data[$sku]['stockInterior'] += $stk;
                }
            }
        }
        curl_multi_remove_handle($multi_handle, $ch);
        curl_close($ch);
    }
    curl_multi_close($multi_handle);
}

// Paso 4: Ensamblar respuesta
$output = [];
foreach ($items as $item) {
    $precioVal = $item['precio'] ?? $item['price'] ?? 0;
    $sku = $item['sku'] ?? '';
    
    // Stock de Digicorp o fallback a datos locales
    if (isset($stock_data[$sku])) {
        $stockCentro = $stock_data[$sku]['stockCentro'];
        $stockAlto = $stock_data[$sku]['stockAlto'];
        $stockLlojeta = $stock_data[$sku]['stockLlojeta'];
        $stockInterior = $stock_data[$sku]['stockInterior'];
    } else {
        $stockCentro = 0;
        $stockAlto = 0;
        $stockLlojeta = 0;
        $stockInterior = $item['stockTotal'] ?? 0;
        if ($stockInterior == 0) {
            $stockInterior = ($item['stock_lapaz'] ?? 0) + ($item['stock_interior'] ?? 0);
        }
    }
    
    $output[] = [
        'id'               => $sku,
        'nombre'           => $item['nombre'] ?? '',
        'marca'            => $item['marca'] ?? '',
        'modelo'           => $item['code'] ?? $item['sku'] ?? '',
        'sku'              => $sku,
        'precio'           => $precioVal,
        'price_final'      => $item['price_final'] ?? $precioVal,
        'descripcion'      => $item['descripcion'] ?? '',
        'image'            => $item['image'] ?? $item['urlImagen1'] ?? '',
        'categoriaCodigo'  => $item['categoriaCodigo'] ?? '',
        'stock_lp_centro'  => $stockCentro,
        'stock_lp_llojeta' => $stockLlojeta,
        'stock_lp_satelite'=> $stockAlto,
        'stock_satelite'   => $stockAlto,
        'stock_llojeta'    => $stockLlojeta,
        'stock_centro'     => $stockCentro,
        'stock_interior'   => $stockInterior,
        'stockTotal'       => $stockCentro + $stockAlto + $stockLlojeta + $stockInterior,
    ];
}

echo json_encode($output);
