<?php
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
include(__DIR__ . '/../config/koneksi.php');

// 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 create_user($user_code)
{
    $postdata = $this->postdata('create_user', [
        'user_code' => $user_code
    ]);

    return $this->send_request($postdata, $this->base_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 get_balance($user_code)
{
    $postdata = $this->postdata('user_balance', [
        'user_code' => $user_code
    ]);

    return $this->send_request($postdata, $this->base_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 sync_history_game($conn)
        {
    $data = $this->history_bet();

    if(!isset($data['status']) || $data['status'] !== true) return false;
    if(empty($data['data'])) return false;

    foreach($data['data'] as $row) {

        $userID    = mysqli_real_escape_string($conn, $row['username']);
        $gameID    = mysqli_real_escape_string($conn, $row['game_id']);
        $bet       = floatval($row['bet']);
        $win       = floatval($row['win']);
        $result    = mysqli_real_escape_string($conn, $row['result']); // WIN / LOSE
        $provider  = mysqli_real_escape_string($conn, $row['provider']);
        $trxTime   = $row['datetime'];
        $note      = "Game $gameID - $result";

        // Cek supaya tidak double insert
        $cek = mysqli_query($conn, "SELECT id FROM tb_history_game 
                                    WHERE userID='$userID' 
                                    AND gameID='$gameID' 
                                    AND datetime='$trxTime' LIMIT 1");
        if(mysqli_num_rows($cek) == 0) {
            mysqli_query($conn, "
                INSERT INTO tb_history_game (userID, gameID, bet, win, result, provider, note, datetime)
                VALUES ('$userID', '$gameID', '$bet', '$win', '$result', '$provider', '$note', '$trxTime')
            ");
        }
    }

    return true;
}

		public function send_request($postdata, $url){
			
			$jsonData = json_encode($postdata);
			
			$headerArray = ['Content-Type: application/json'];
			
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $url);
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
			curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);
			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			
			// Mengaktifkan penggunaan cookies
			curl_setopt($ch, CURLOPT_COOKIEFILE, '');
			$res = curl_exec($ch);
			if ($res === false) {
				$error = curl_error($ch);
				curl_close($ch);
				throw new Exception("Kesalahan cURL: " . $error);
			}
			
			curl_close($ch);
			
			// DEBUG: simpan respon asli untuk dianalisa
             file_put_contents(__DIR__ . "/debug_api_log.txt", "URL: $url\nRESPON API:\n$res\n\n", FILE_APPEND);
                
            if (strpos($res, 'error code: 500') !== false) {
                 throw new Exception("API sedang gangguan (500). Coba beberapa saat lagi.");
            }

             // Decode JSON
             $decodedResponse = json_decode($res, true);

			
			if (json_last_error() !== JSON_ERROR_NONE) {
				throw new Exception("Kesalahan dalam mendekode JSON: " . json_last_error_msg());
			}
			
			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;
}

?>