<?php
// api/productos.php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');

require_once __DIR__ . '/../Connections/conexionabm.php';

$cat = isset($_GET['cat']) ? (int)$_GET['cat'] : 0;
$q   = isset($_GET['q'])   ? trim($_GET['q']) : '';
$lim = isset($_GET['limit'])  ? max(1, min(120, (int)$_GET['limit'])) : 60;
$off = isset($_GET['offset']) ? max(0, (int)$_GET['offset']) : 0;

/**
 * Reglas:
 * - Solo productos:
 *      - NO borrados (borrado = 0 o NULL)
 *      - fotopath contiene 'fotosproductos'
 *      - descripcio no contiene 'NO USAR'
 *      - descripcio no contiene '*'
 */
$where = "
    WHERE (p.borrado = 0 OR p.borrado IS NULL)
      AND p.fotopath LIKE '%fotosproductos%'
      AND p.descripcio NOT LIKE '%NO USAR%'
      AND p.descripcio NOT LIKE '%*%'
";

$params = [];
$types  = "";

// Filtro por categoría (cod_cat)
if ($cat > 0) {
    //$where .= " AND p.cod_cat = ?";	// Si utilizamos categoria
    $where .= " AND p.cod_divi = ?";		// Si utilizamos division
    $types .= "i";
    $params[] = $cat;
}

// Filtro por texto (busca en descripción y código)
if ($q !== '') {
    $where .= " AND (p.descripcio LIKE ? OR p.prod_cod LIKE ?)";
    $types .= "ss";
    $like = "%{$q}%";
    $params[] = $like;
    $params[] = $like;
}

$sql = "
    SELECT 
        p.prod_cod,
        p.descripcio,
        p.precio,
        p.precio_esp,
        p.fotopath,
        p.cod_cat,
        p.categoria,
        p.cod_divi,
        p.division,
		p.inventari
    FROM productos p
    $where
    ORDER BY p.descripcio ASC
    LIMIT ? OFFSET ?
";

$types .= "ii";
$params[] = $lim;
$params[] = $off;

$stmt = $mysqli->prepare($sql);
if (!$stmt) {
    http_response_code(500);
    echo json_encode(['error' => 'Error en prepare: ' . $mysqli->error], JSON_UNESCAPED_UNICODE);
    exit;
}

$stmt->bind_param($types, ...$params);
$stmt->execute();
$res = $stmt->get_result();

$data = [];
$fallbackLogo = 'images/logo_dragon1.png';

// Ruta base del sitio (sube un nivel desde /api hasta raíz del proyecto)
$basePath = realpath(__DIR__ . '/..');

while ($row = $res->fetch_assoc()) {
    // Precio final: si hay precio_esp (>0) úsalo, si no precio normal
    $precio = (float)$row['precio_esp'];
    if ($precio <= 0) {
        $precio = (float)$row['precio'];
    }

    // Obtener y normalizar ruta de imagen desde BD
    $img = trim((string)$row['fotopath']);

    if ($img !== '') {
        // Convertir backslashes a slashes para URL web
        $imgWeb = str_replace('\\', '/', $img);

        // Construir ruta física para verificar existencia
        // Si fotopath es "fotosproductos/archivo.jpg"
        $rutaArchivo = $basePath . '/' . ltrim($imgWeb, '/');

        if (!is_file($rutaArchivo)) {
            // Si el archivo no existe en disco, usar logo
            $imgWeb = $fallbackLogo;
        }
    } else {
        // Si no tiene ruta, usar logo
        $imgWeb = $fallbackLogo;
    }

    $data[] = [
        'id'         => (string)$row['prod_cod'],
        'titulo'     => trim($row['descripcio']),
        'precio'     => $precio,
        'unidad'     => '',
        'imagen'     => $imgWeb,
        'id_cat'     => (int)$row['cod_cat'],
        'categoria'  => trim((string)$row['categoria']),
        'existencia' => isset($row['inventari']) ? (float)$row['inventari'] : null, // <- aquí también ajustas si cambia el nombre
    ];
}

echo json_encode($data, JSON_UNESCAPED_UNICODE);
