<?php
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

include('../config/koneksi.php'); // pastikan path ini benar ke koneksi database kamu

// 1️⃣ Jika form dari menu API di-setting panel admin dikirim:
if (isset($_POST['submit_api'])) {
    $code_agent = mysqli_real_escape_string($conn, $_POST['code_agent']);
    $signature  = mysqli_real_escape_string($conn, $_POST['signature']);

    // Cek apakah sudah ada data API
    $cek = mysqli_query($conn, "SELECT * FROM tb_api WHERE id = 1");
    if (mysqli_num_rows($cek) > 0) {
        mysqli_query($conn, "UPDATE tb_api SET code_agent='$code_agent', signature='$signature' WHERE id=1");
    } else {
        mysqli_query($conn, "INSERT INTO tb_api (id, code_agent, signature) VALUES (1, '$code_agent', '$signature')");
    }
    
echo "<script>alert('API berhasil disimpan!');window.location.href='../setting/';</script>";
    exit;
}

// 2️⃣ Ambil data Code Agent & Signature dari database agar class di bawah bisa otomatis pakai
$get_api = mysqli_query($conn, "SELECT code_agent, signature FROM tb_api WHERE id = 1 LIMIT 1");
if (mysqli_num_rows($get_api) > 0) {
    $api_data = mysqli_fetch_assoc($get_api);
    $user_agent = $api_data['code_agent'];
    $signature  = $api_data['signature'];
} else {
    $user_agent = "";
    $signature  = "";
}

	// include(__DIR__ . '/connectAPI.php');

	
	class API {
		
		private $user_agent;
		private $signature;
		private $base_url = "https://api.nexusggr.com";
		
		public function __construct($user_agent, $signature) {
			$this->user_agent = $user_agent;
			$this->signature = $signature;
		}
		
		private function postdata($method, $additional_data = []) {
			$base_data = [
            'agent_code' => $this->user_agent,
            'agent_token' => $this->signature,
            'method' => $method
			];
			return array_merge($base_data, $additional_data);
		}
		
		public function money_info()
		{
			$postdata = $this->postdata('money_info');
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		public function money_info_user($user_code)
		{
			$postdata = $this->postdata('money_info', [
            'user_code' => $user_code
			]);
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		public function user_deposit($user_code, $amount)
		{
			$postdata = $this->postdata('user_deposit', [
            'user_code' => $user_code,
            'amount' => $amount
			]);
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		public function user_create($user_code)
		{
			$postdata = $this->postdata('user_create', [
            'user_code' => $user_code
			]);
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		public function game_launch($user_code, $provider_code, $game_code, $lang = 'en')
		{
			$postdata = $this->postdata('game_launch', [
            'user_code' => $user_code,
            'provider_code' => $provider_code,
            'game_code' => $game_code,
            'lang' => $lang
			]);
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		public function user_withdraw($user_code, $amount)
		{
			$postdata = $this->postdata('user_withdraw', [
            'user_code' => $user_code,
            'amount' => $amount
			]);
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		public function provider_list()
		{
			$postdata = $this->postdata('provider_list');
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		public function game_list($provider_code)
		{
			$postdata = $this->postdata('game_list', [
            'provider_code' => $provider_code
			]);
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		public function get_all_games()
        {
          // Ambil daftar semua provider dulu
            $providers = $this->provider_list();

             if (!isset($providers['msg']) || $providers['msg'] != 'SUCCESS') {
              return [
              'msg' => 'FAILED',
              'error' => 'Tidak bisa mengambil daftar provider',
              'response' => $providers
            ];
        }

    $allGames = [];

    // Loop setiap provider dan ambil daftar gamenya
    foreach ($providers['data'] as $prov) {
        $providerCode = $prov['provider_code'];

        $games = $this->game_list($providerCode);

        if (isset($games['msg']) && $games['msg'] == 'SUCCESS' && !empty($games['data'])) {
            foreach ($games['data'] as $g) {
                $allGames[] = [
                    'provider'   => $providerCode,
                    'game_code'  => $g['game_code'],
                    'name'       => $g['game_name'] ?? 'Unknown',
                    'type'       => $g['game_type'] ?? '-'
                ];
            }
        }
    }

    return [
        'msg'  => 'SUCCESS',
        'data' => $allGames
    ];
}

		public function history_bet()
		{
			$currentDate = date('Y-m-d');
			$postdata = $this->postdata('get_game_log', [
			'game_type' => 'slot',
			'start' => $currentDate . ' 00:00:00',
			'end' => $currentDate . ' 23:59:59',
			'page' => 0,
			'perPage' => 1000
			]);
			
			$url = $this->base_url;
			return $this->send_request($postdata, $url);
		}
		
		
		public function send_request($data, $url)
{
    $headers = array(
        "Content-Type: application/json",
        "apikey: " . $this->token,
        "agent: " . $this->agen
    );

    $payload = json_encode($data);

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);

    $result = curl_exec($curl);

    // ERROR CURL
    if (curl_errno($curl)) {
        throw new Exception("cURL Error: " . curl_error($curl));
    }

    curl_close($curl);

    // --- PATCH FINAL DIBAWAH INI ---

    // API mengembalikan kosong
    if (empty($result)) {
        throw new Exception("Respons API kosong. Token/Agent kemungkinan salah.");
    }

    // API mengembalikan HTML → pasti error
    if (stripos($result, "<html") !== false || stripos($result, "<!DOCTYPE") !== false) {
        throw new Exception(
            "API mengembalikan HTML, bukan JSON. Cek URL API / Token API.\n\nRaw Response: \n" . $result
        );
    }

    // Decode JSON aman
    $response = json_decode($result, true);

    // Jika JSON gagal di-decode
        if (json_last_error() !== JSON_ERROR_NONE) {
        throw new Exception(
            "Kesalahan dalam mendekode JSON: " . json_last_error_msg() .
            "\n\nRaw Response:\n" . $result
           );
       }

         return $decodedResponse;
		}
	
	
	// Inisialisasi objek API
	$FLASHERDEV = new API($user_agent, $signature);
	// === Tangkap input dari form setting API ===
if (isset($_POST['submit_api'])) {
    include('../config/koneksi.php');

    $code_agent = mysqli_real_escape_string($conn, $_POST['code_agent']);
    $signature  = mysqli_real_escape_string($conn, $_POST['signature']);

    // Simpan ke database
    $cek = mysqli_query($conn, "SELECT * FROM tb_api WHERE id = 1");
    if (mysqli_num_rows($cek) > 0) {
        mysqli_query($conn, "UPDATE tb_api SET code_agent='$code_agent', signature='$signature' WHERE id=1");
    } else {
        mysqli_query($conn, "INSERT INTO tb_api (id, code_agent, signature) VALUES (1, '$code_agent', '$signature')");
    }

    echo "<script>alert('Code Agent & Signature berhasil disimpan!');window.location.href='../setting/';</script>";
    exit;
}

?>