<?php
error_reporting(E_ALL);
ini_set('display_errors', 1); // ⚠️ সাময়িক Debug
/**
 * get_all_games_merged.php
 * GetAllGameList.php-এর সব Category-র Game একসাথে (Merge করে),
 * Pagination (Load More)-সহ ফেরত দেয়।
 */
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');

$gameListPath = __DIR__ . '/deepanshu/api/webapi/GetAllGameList.php';
$gameData = json_decode(file_get_contents($gameListPath), true);

$allGames = [];

// ✅ নতুন যোগ — এখন URL-এ ?category=slot দিলে, শুধু সেই
// Category-র সব Game দেখাবে। ?category=all দিলে, Slot+Fish+
// Lottery+Sport+Video+Popular — সব Category-র সব Game একসাথে
// (Merge করে) দেখাবে। category না দিলে, Default "Popular"।
$requestedCategory = trim($_GET['category'] ?? 'popular');

if ($requestedCategory === 'all') {
    // ✅ ঠিক করা হলো — "All" Tab-এর জন্য, এখন GetAllGameList.php-এর
    // বদলে, তোমার নতুন Upload করা all_game.json ব্যবহার হচ্ছে
    $allGamePath = __DIR__ . '/deepanshu/api/webapi/data/all_game.json';
    $allGameData = @json_decode(@file_get_contents($allGamePath), true);
    // ✅ bgaming.json-এর মতো "data.gameLists" Structure-ও Support করা
    $allGames = $allGameData['data']['gameLists'] ?? $allGameData['gameLists'] ?? $allGameData ?? [];
    if (!is_array($allGames)) $allGames = [];
} elseif (false) {
    // ✅ পুরনো Merge-Logic এখন আর ব্যবহার হয় না (all_game.json
    // ব্যবহার হওয়ায়) — কিন্তু নিরাপত্তার জন্য Code সরানো হয়নি
    foreach ($gameData['data'] as $catKey => $catValue) {
        if ($catKey === 'awardRecordList') continue; // এটা Game-তালিকা না, তাই বাদ

        if ($catKey === 'popular' && is_array($catValue)) {
            // Popular-এর ভেতরের Sub-Category-গুলোও ভাঙা
            foreach ($catValue as $subCat => $subGames) {
                if (is_array($subGames)) {
                    foreach ($subGames as $game) {
                        if (is_array($game)) $allGames[] = $game;
                    }
                }
            }
        } elseif (is_array($catValue)) {
            foreach ($catValue as $game) {
                if (is_array($game)) $allGames[] = $game;
            }
        }
    }
} elseif ($requestedCategory === 'popular') {
    $popularData = $gameData['data']['popular'] ?? [];
    foreach ($popularData as $subCategory => $games) {
        if (is_array($games)) {
            foreach ($games as $game) {
                if (is_array($game)) $allGames[] = $game;
            }
        }
    }
} else {
    // ✅ সরাসরি সেই Category-র (slot, sport, fish, lottery ইত্যাদি) সব Game
    $categoryGames = $gameData['data'][$requestedCategory] ?? [];
    if (is_array($categoryGames)) {
        foreach ($categoryGames as $game) {
            if (is_array($game)) $allGames[] = $game;
        }
    }
}

// ✅ Duplicate সরানো (একই gameCode/gameID দুইবার থাকলে)
// ঠিক করা হলো — আগে শুধু "gameCode" Check হতো, কিন্তু কিছু
// Game Entry "gameID" ব্যবহার করে (gameCode না) — তাই আগে
// Duplicate-Detection ব্যর্থ হতো। এখন দুটোই Check হচ্ছে।
$seen = [];
$uniqueGames = [];
foreach ($allGames as $game) {
    $code = $game['gameCode'] ?? $game['gameID'] ?? json_encode($game);
    if (!isset($seen[$code])) {
        $seen[$code] = true;
        $uniqueGames[] = $game;
    }
}

// ✅ নতুন যোগ — ?vendor=JILI দিলে, শুধু সেই Provider-এর Game-ই
// রেখে বাকি বাদ দেওয়া হচ্ছে (Category-Filter-এর পরে, Extra Layer)
$requestedVendor = trim($_GET['vendor'] ?? '');
if ($requestedVendor !== '') {
    $uniqueGames = array_values(array_filter($uniqueGames, function($g) use ($requestedVendor) {
        return isset($g['vendorCode']) && strtoupper($g['vendorCode']) === strtoupper($requestedVendor);
    }));
}

// ✅ Pagination — page ও limit দিয়ে অংশ-অংশ করে দেওয়া (Load More-এর জন্য)
$page = intval($_GET['page'] ?? 1);
$limit = intval($_GET['limit'] ?? 30);
$offset = ($page - 1) * $limit;

$pagedGames = array_slice($uniqueGames, $offset, $limit);

echo json_encode([
    'games' => $pagedGames,
    'total' => count($uniqueGames),
    'page' => $page,
    'has_more' => ($offset + $limit) < count($uniqueGames)
]);
