<?php
// NEXUS Commerce - Products API Endpoint
require_once __DIR__ . '/db.php';

$category = $_GET['category'] ?? null;
$search = $_GET['search'] ?? null;
$group_buy = $_GET['group_buy'] ?? null;
$id = $_GET['id'] ?? null;

try {
    if ($id) {
        $stmt = $pdo->prepare("SELECT p.*, s.store_name, s.logo_url, s.trust_score as store_trust_score, s.response_rate, c.name as category_name 
                               FROM products p 
                               JOIN stores s ON p.store_id = s.id 
                               JOIN categories c ON p.category_id = c.id 
                               WHERE p.id = ?");
        $stmt->execute([$id]);
        $product = $stmt->fetch();

        // Auto-seed if not found
        if (!$product) {
            require_once __DIR__ . '/seed.php';
            $stmt->execute([$id]);
            $product = $stmt->fetch();
        }

        // Fallback to first available product if ID is out of range
        if (!$product) {
            $stmtFallback = $pdo->query("SELECT p.*, s.store_name, s.logo_url, s.trust_score as store_trust_score, s.response_rate, c.name as category_name 
                                         FROM products p 
                                         JOIN stores s ON p.store_id = s.id 
                                         JOIN categories c ON p.category_id = c.id 
                                         LIMIT 1");
            $product = $stmtFallback->fetch();
        }

        if ($product) {
            $product['gallery'] = json_decode($product['gallery'] ?? '[]');
            $product['specs'] = json_decode($product['specs'] ?? '{}');
            $product['variants'] = json_decode($product['variants'] ?? '{}');
            $product['ai_summary'] = json_decode($product['ai_summary'] ?? '{}');
            echo json_encode(['status' => 'success', 'data' => $product]);
        } else {
            echo json_encode(['status' => 'error', 'message' => 'Product not found']);
        }
        exit;
    }

    $query = "SELECT p.*, s.store_name, s.trust_score as store_trust_score, c.name as category_name 
              FROM products p 
              JOIN stores s ON p.store_id = s.id 
              JOIN categories c ON p.category_id = c.id 
              WHERE 1=1";
    $params = [];

    if ($category && $category !== 'all') {
        $query .= " AND c.slug = ?";
        $params[] = $category;
    }

    if ($search) {
        $query .= " AND (p.title LIKE ? OR p.description LIKE ?)";
        $params[] = '%' . $search . '%';
        $params[] = '%' . $search . '%';
    }

    if ($group_buy) {
        $query .= " AND p.is_group_buy = 1";
    }

    $query .= " ORDER BY p.id DESC";

    $stmt = $pdo->prepare($query);
    $stmt->execute($params);
    $products = $stmt->fetchAll();

    // Auto-seed if database is empty
    if (count($products) === 0 && empty($category) && empty($search)) {
        require_once __DIR__ . '/seed.php';
        $stmt->execute($params);
        $products = $stmt->fetchAll();
    }

    foreach ($products as &$p) {
        $p['gallery'] = json_decode($p['gallery'] ?? '[]');
        $p['specs'] = json_decode($p['specs'] ?? '{}');
        $p['variants'] = json_decode($p['variants'] ?? '{}');
        $p['ai_summary'] = json_decode($p['ai_summary'] ?? '{}');
    }

    echo json_encode(['status' => 'success', 'data' => $products]);

} catch (Exception $e) {
    echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
