<?php

include '../db/koneksi.php';
include '../api/nexus.php';
include '../api/sgx.php';
session_start();

header('Content-Type: application/json');

if (!isset($_SESSION['username']) || !isset($_SESSION['extplayer'])) {
    echo json_encode(['status' => 'error', 'message' => 'Sesi login tidak valid.']);
    exit;
}

$extplayer   = $_SESSION['extplayer'];
$username    = $_SESSION['username'];
$bank_pilihan_form = $_POST['bank'] ?? ''; 
$amount = $_POST['amount'] ?? '0';

$cleanAmount = preg_replace('/[^0-9]/', '', $amount);
$jumlah = (int)$cleanAmount;

$min = 50000;
$max = 100000000;
if ($jumlah < $min) {
    echo json_encode(['status' => 'error', 'message' => 'Minimal withdraw adalah Rp ' . number_format($min, 0, ',', '.')]);
    exit;
}
if ($jumlah > $max) {
    echo json_encode(['status' => 'error', 'message' => 'Maksimal withdraw adalah Rp ' . number_format($max, 0, ',', '.')]);
    exit;
}

$q = mysqli_query($koneksi, "SELECT * FROM tb_user WHERE extplayer = '$extplayer'");
if (!$q || mysqli_num_rows($q) == 0) {
    echo json_encode(['status' => 'error', 'message' => 'User tidak ditemukan.']);
    exit;
}

$d = mysqli_fetch_assoc($q);
$saldo = intval($d['saldo']);

$bank_asal = mysqli_real_escape_string($koneksi, $d['bank'] . ' - ' . $d['nama_rekening'] . ' - ' . $d['nomor_rekening']);

if ($jumlah > $saldo) {
    echo json_encode(['status' => 'error', 'message' => 'Saldo tidak mencukupi.']);
    exit;
}

// =========================================================================
// VALIDASI PROTEKSI TURNOVER (WD KUNCI JIKA TARGET BELUM TERCAPAI)
// =========================================================================
// 1. Cari tahu apakah user memiliki promo deposit terakhir yang aktif/Sukses
$query_depo = mysqli_query($koneksi, "SELECT * FROM `tb_deposit` 
               WHERE `username` = '" . mysqli_real_escape_string($koneksi, $username) . "' 
               AND `status` = 'Sukses' 
               AND `bonus` > 0 
               ORDER BY `id` DESC LIMIT 1");

if (mysqli_num_rows($query_depo) > 0) {
    $data_depo = mysqli_fetch_assoc($query_depo);
    
    // Set parameter perkalian sesuai promo bonus baru (x15)
    $perkalianto = 15; 
    $target_turnover = ($data_depo['jumlah'] + $data_depo['bonus']) * $perkalianto;
    
    // Ambil waktu tepat saat deposit promo tersebut disetujui admin
    $datetime_start = $data_depo['created_at']; 
    $datetime_end   = date('Y-m-d H:i:s'); // Sampai detik ini saat mau WD

    // 2. Hitung total transaksi bermain member di tb_play sejak depo sukses
    $total_turnover = 0;
    $sql_bet = "SELECT SUM(CAST(JSON_EXTRACT(tc, '$.bet') AS DECIMAL(15,2))) as total_to 
                FROM `tb_play` 
                WHERE `user` = '" . mysqli_real_escape_string($koneksi, $username) . "' 
                AND `gamestart` BETWEEN '$datetime_start' AND '$datetime_end'";

    $query_bet = mysqli_query($koneksi, $sql_bet);
    if ($query_bet) {
        $res_bet        = mysqli_fetch_assoc($query_bet);
        $total_turnover = $res_bet['total_to'] ?? 0;
    }

    // 3. Bandingkan hasil taruhan dengan target promo
    if ($total_turnover < $target_turnover) {
        $sisa_to = $target_turnover - $total_turnover;
        echo json_encode([
            'status' => 'error', 
            'message' => 'Withdraw Gagal! Akun Anda terikat promo BONUS NEW MEMBER. Kurang Rp ' . number_format($sisa_to, 0, ',', '.') . ' Turnover lagi untuk dapat melakukan penarikan.'
        ]);
        exit; // Potong proses di sini agar tidak masuk ke database/API
    }
}
// =========================================================================
// VALIDASI CEK WITHDRAW PENDING (MENCEGAH DOUBLE WITHDRAW)
// =========================================================================
$query_cek_pending = mysqli_query($koneksi, "SELECT id FROM tb_withdraw 
                                             WHERE username = '" . mysqli_real_escape_string($koneksi, $username) . "' 
                                             AND status = 'Pending' 
                                             LIMIT 1");

if (mysqli_num_rows($query_cek_pending) > 0) {
    echo json_encode([
        'status' => 'error', 
        'message' => 'Anda masih memiliki permintaan withdraw yang sedang diproses. Mohon tunggu hingga proses sebelumnya selesai.'
    ]);
    exit; // Berhenti di sini, tidak lanjut ke proses insert
}

// =========================================================================
// JALANKAN PROSES
// =========================================================================
$ref = 'WD' . date('YmdHis') . strtoupper(substr(md5(uniqid(mt_rand(), true)), 0, 6));

$sql = "INSERT INTO tb_withdraw (extplayer, username, ref, jumlah, bank_asal, status, created_at, updated_at)
        VALUES ('$extplayer', '$username', '$ref', '$jumlah', '$bank_asal', 'Pending', NOW(), NOW())";

if (mysqli_query($koneksi, $sql)) {

$ref = 'WD' . date('YmdHis') . strtoupper(substr(md5(uniqid(mt_rand(), true)), 0, 6));

// Jalankan proses withdraw jika lolos validasi di atas
$sql = "INSERT INTO tb_withdraw (extplayer, username, ref, jumlah, bank_asal, status, created_at, updated_at)
        VALUES ('$extplayer', '$username', '$ref', '$jumlah', '$bank_asal', 'Pending', NOW(), NOW())";

if (mysqli_query($koneksi, $sql)) {
    mysqli_query($koneksi, "UPDATE tb_user SET saldo = saldo - $jumlah WHERE extplayer = '$extplayer'");
    $nx->withdraw_member($extplayer, $jumlah);
    $SGX->withdraw_member($extplayer, $jumlah);

    echo json_encode(['status' => 'success', 'message' => 'Permintaan withdraw berhasil diajukan. Menunggu konfirmasi admin.']);
} else {
    echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data withdraw: ' . mysqli_error($koneksi)]);
}  

?>