<?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;

// Solo productos no borrados y con ruta que apunte a fotosproductos
$where = "
    WHERE (p.borrado = 0 OR p.borrado IS NULL)
";

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

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

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

// Si quieres forzar solo los que tienen 'fotosproductos', descomenta esto:
// $where .= " AND (p.fotopath LIKE '%fotosproductos\\\\%' OR p.fotopath LIKE '%fotosproductos/%')";

$sql = "
    SELECT 
        p.prod_cod,
        p.descripcio,
        p.precio,
        p.precio_esp,
        p.fotopath,
        p.cod_cat,
        p.categoria
    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';

while ($row = $res->fetch_assoc()) {

    // Precio final: prioridad a precio_esp si > 0
    $precio = (float)$row['precio_esp'];
    if ($precio <= 0) {
        $precio = (float)$row['precio'];
    }

    // Normalizar ruta de imagen
    $img = trim((string)$row['fotopath']);

    // Reemplazar backslashes por slashes para URL web
    if ($img !== '') {
        $img = str_replace('\\', '/', $img);
    }

    // Asegurar fallback si no tiene foto o el archivo no existe
    if ($img === '') {
        // Sin ruta: usar logo
        $imgWeb = $fallbackLogo;
    } else {
        // Si la ruta es relativa tipo 'fotosproductos/archivo.jpg'
        // intentamos validar existencia física
        $rutaArchivo = __DIR__ . '/../' . ltrim($img, '/');

        if (!file_exists($rutaArchivo)) {
            // No existe en disco -> usamos logo
            $imgWeb = $fallbackLogo;
        } else {
            // Existe -> usamos la ruta tal cual (normalizada)
            $imgWeb = $img;
        }
    }

    $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']),
    ];
}

echo json_encode($data, JSON_UNESCAPED_UNICODE);

/*
// 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;

$where = "WHERE (p.fotopath LIKE '%fotosproductos%' AND p.borrado = 0 OR p.borrado IS NULL)";
$params = [];
$types  = "";

// Filtro por categoría (cod_cat)
if ($cat > 0) {
    $where .= " AND p.cod_cat = ?";
    $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
    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 = [];
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'];
    }

    // imagen: si fotopath viene con ruta relativa, respeta; si no, usa una genérica
    $img = trim((string)$row['fotopath']);
    if ($img === '') {
        $img = 'images/logo_dragon1.png'; // crea esta imagen si quieres
    }

    $data[] = [
        'id'        => (string)$row['prod_cod'],
        'titulo'    => trim($row['descripcio']),
        'precio'    => $precio,
        'unidad'    => '', // si luego tienes unidad la ponemos aquí
        'imagen'    => $img,
        'id_cat'    => (int)$row['cod_cat'],
        'categoria' => trim((string)$row['categoria']),
    ];
}

echo json_encode($data, JSON_UNESCAPED_UNICODE);
*/