<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
set_time_limit(180); 

include 'db/koneksi.php';
include 'api/sgx.php'; 

header('Content-Type: text/html; charset=utf-8');

echo "
<style>
    body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; background: #f8fafc; color: #1e293b; padding: 30px; }
    .card { background: #ffffff; padding: 25px; border-radius: 8px; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1); max-width: 600px; margin: 0 auto; }
    .form-group { margin-bottom: 20px; }
    label { display: block; font-weight: bold; margin-bottom: 8px; font-size: 14px; }
    select { width: 100%; padding: 10px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 16px; background: #fff; }
    button { width: 100%; padding: 12px; background: #f59e0b; border: none; color: #000; font-weight: bold; font-size: 16px; border-radius: 6px; cursor: pointer; transition: 0.2s; }
    button:hover { background: #d97706; }
    .log-box { background: #0f172a; color: #38bdf8; padding: 20px; border-radius: 6px; font-family: monospace; font-size: 13px; line-height: 1.6; max-width: 600px; margin: 20px auto 0 auto; overflow-x: auto; }
    hr { border: 0; border-top: 1px solid #e2e8f0; margin: 20px 0; }
</style>
";

// ==========================================
// 1. TARIK DAFTAR PROVIDER UNTUK DROP-DOWN
// ==========================================
$prov_raw = $SGX->getprovider();
$prov_res = json_decode($prov_raw, true);

$providers = [];

if (isset($prov_res['status']) && $prov_res['status'] == 200 && isset($prov_res['data']['providers'])) {
    foreach ($prov_res['data']['providers'] as $p) {
        $status = $p['provider_status'] ?? 0;
        $code   = $p['provider_code'] ?? '';
        $name   = $p['provider_name'] ?? '';
        
        if (!empty($code)) {
            $providers[] = [
                'code' => $code,
                'name' => $name,
                'status' => $status
            ];
        }
    }
} else {
    die("<div class='card' style='color:red;'>Gagal mengambil daftar provider dari API SGX.</div>");
}

// ==========================================
// 2. FORM TAMPILAN DASHBOARD UTAMA
// ==========================================
echo "<div class='card'>";
echo "<h2>🎯 SGX Game Importer (Manual Mode V3)</h2>";
echo "<p style='color:#64748b; font-size:14px;'>Pilih provider di bawah ini untuk menyinkronkan data game terbaru.</p>";
echo "<hr>";

echo "<form action='import_games.php' method='POST'>";
echo "<div class='form-group'>";
echo "<label for='provider_select'>Silakan Pilih Provider Game:</label>";
echo "<select name='selected_provider' id='provider_select' required>";
echo "<option value=''>-- Pilih Provider --</option>";

foreach ($providers as $prov) {
    $label_status = ($prov['status'] == 0) ? " (Nonaktif)" : "";
    $selected = (isset($_POST['selected_provider']) && $_POST['selected_provider'] === "{$prov['code']}|{$prov['name']}") ? "selected" : "";
    echo "<option value='{$prov['code']}|{$prov['name']}' {$selected}>{$prov['name']} [{$prov['code']}] {$label_status}</option>";
}

echo "</select>";
echo "</div>";
echo "<button type='submit' name='proses_import'>🚀 Mulai Sinkronisasi Game</button>";
echo "</form>";
echo "</div>";

// ==========================================
// 3. EKSEKUSI JIKA TOMBOL DI-KLIK (POST)
// ==========================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['proses_import'])) {
    
    $data_input    = explode('|', $_POST['selected_provider']);
    $provider_code = $data_input[0] ?? '';
    $provider_name = $data_input[1] ?? '';

    if (empty($provider_code) || empty($provider_name)) {
        echo "<div class='log-box' style='color:#ef4444;'>[Error] Data provider tidak valid.</div>";
        exit;
    }

    echo "<div class='log-box'>";
    echo "[INFO] Menghubungi API SGX Center...<br>";
    echo "[INFO] Target Provider: <strong>{$provider_name} ({$provider_code})</strong><br>";
    echo "--------------------------------------------------<br>";

    $response_raw = $SGX->getgames($provider_code);
    $response = json_decode($response_raw, true);

    if (is_array($response) && isset($response['status']) && $response['status'] == 200) {
        
        // 🔹 SMART AUTO-DETECT STRUKTUR DATA GAME (Mendukung Slot & Sportsbook)
        $game_list = [];
        
        if (isset($response['data']['games']) && is_array($response['data']['games'])) {
            // Jalur Biasa: Jika ada sub-array 'games' (Umumnya tipe SLOT)
            $game_list = $response['data']['games'];
        } elseif (isset($response['data']) && is_array($response['data']) && !isset($response['data']['provider_code'])) {
            // Jalur Alternatif: Jika data berbentuk list array langsung di dalam 'data'
            $game_list = $response['data'];
        } elseif (isset($response['data']) && is_array($response['data']) && isset($response['data']['provider_code'])) {
            // Jalur Sportsbook/Casino: Jika 'data' bukan berupa list melainkan langsung 1 baris objek data provider itu sendiri
            $game_list = [$response['data']]; 
        } else {
            // Fallback terakhir, jadikan response utama pembungkusnya
            $game_list = $response;
        }

        if (!empty($game_list) && is_array($game_list)) {
            
            $stmt = $koneksi->prepare("
                INSERT INTO tb_game 
                (provider_name, game_provider, game_name, game_code, game_type, game_image, game_status, seq, source) 
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
                ON DUPLICATE KEY UPDATE 
                game_name = VALUES(game_name),
                game_type = VALUES(game_type),
                game_image = VALUES(game_image),
                game_status = VALUES(game_status)
            ");

            $inserted_count = 0;

            foreach ($game_list as $index => $game) {
                // Lewati elemen status bawaan json
                if (in_array($index, ['status', 'msg', 'message', 'code', 'error']) || !is_array($game)) {
                    continue;
                }

                // Pemetaan penamaan key item game
                $game_name  = $game['game_name'] ?? $game['name'] ?? $provider_name;
                $game_code  = $game['game_code'] ?? $game['code'] ?? $game['provider_code'] ?? '';
                $game_type  = $game['game_type'] ?? $game['type'] ?? 'SPORTS';
                $game_image = $game['game_image'] ?? $game['image'] ?? $game['provider_image'] ?? ''; 
                
                $game_status = "1";
                $source      = "SGX";
                $seq         = ($index === 0 || !is_numeric($index)) ? 1 : $index + 1;
                
                if (empty($game_code)) {
                    continue; 
                }

                $stmt->bind_param(
                    "sssssssis", 
                    $provider_name, 
                    $provider_code, 
                    $game_name,     
                    $game_code,     
                    $game_type,     
                    $game_image,    
                    $game_status,   
                    $seq,           
                    $source         
                );
                
                $stmt->execute();
                $inserted_count++;
            }
            
            $stmt->close();
            
            echo "<span style='color: #4ade80;'>[SUKSES] Berhasil memproses total {$inserted_count} data game untuk {$provider_name}!</span><br>";
            echo "[INFO] Sinkronisasi database selesai 100%.<br>";

        } else {
            echo "<span style='color: #a1a1aa;'>[WARNING] Daftar game kosong atau tidak ada data aktif.</span><br>";
        }

    } else {
        $msg_error = $response['message'] ?? $response['msg'] ?? 'Format Respons API Salah / RTO';
        echo "<span style='color: #f87171;'>[GAGAL] API menolak permintaan. Alasan: {$msg_error}</span><br>";
        echo "<br><strong>Raw JSON Balikan:</strong><pre style='background:#1e293b; color:#cbd5e1; padding:10px; border-radius:5px;'>".htmlspecialchars($response_raw)."</pre>";
    }

    echo "</div>";
}
?>