<?php
require_once('session.php');
require_once('../classes/class.nexusggr.php'); // API

// Ambil password lama untuk validasi
$currentPass = $u['pass'];

// Mengambil ID User secara akurat dari session login atau form POST
$usersID = $_SESSION['cuid'] ?? $u['cuid'] ?? (int)$_POST['userID'];

$metode   = mysqli_real_escape_string($conn, $_POST['metode']);
$nominal  = preg_replace('/[^0-9]/', '', $_POST['nominal']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

$nominal = (int)$nominal;

/* =========================
   AMBIL MINIMAL WITHDRAW
========================= */
$getMinimal = mysqli_query($conn,"SELECT minimal_wd FROM tb_minimal LIMIT 1");
$gm = mysqli_fetch_assoc($getMinimal);
$minimal_wd = $gm['minimal_wd'] ?? 10000;

/* =========================
   PERBAIKAN MUTLAM: DATA BANK USER
========================= */
// 1. Ambil nilai 'cuid' dari baris bank yang dipilih user di form <select name="pay_from">
$pay_from = intval($_POST['pay_from'] ?? 0);

// 2. Jika user memilih bank dari dropdown, cari baris bank tersebut di tb_bank
if ($pay_from > 0) {
    $getBank = mysqli_query($conn, "SELECT akun, no_rek, pemilik FROM tb_bank WHERE cuid = '$pay_from' LIMIT 1");
} else {
    // Jalur cadangan jika pay_from tidak terkirim, cari pakai username seperti di halaman form
    $username_situs = mysqli_real_escape_string($conn, $u['userid'] ?? '');
    $getBank = mysqli_query($conn, "SELECT akun, no_rek, pemilik FROM tb_bank WHERE userID = '$username_situs' LIMIT 1");
}

if ($getBank && mysqli_num_rows($getBank) > 0) {
    $gb = mysqli_fetch_assoc($getBank);
    
    $nama_bank   = trim($gb['akun']);
    $no_rekening = trim($gb['no_rek']);
    $nama_user   = trim($gb['pemilik']);

    // Data ini yang akan masuk ke kolom 'metode' dan 'note' di tb_transaksi
    $db_metode = $nama_bank . " (" . $no_rekening . ")";
    $db_note   = "Withdraw: " . $nama_bank . " - " . $no_rekening . " a/n " . $nama_user;
} else {
    // Pengaman terakhir jika database bermasalah mendadak
    $db_metode = "Manual Bank";
    $db_note   = "Gagal memuat data rekening dari form select ID: " . $pay_from;
}

$safe_metode = mysqli_real_escape_string($conn, $db_metode);
$safe_note   = mysqli_real_escape_string($conn, $db_note); 

/* =========================
   CEK SALDO USER
========================= */
$cekBalance = mysqli_query($conn,"SELECT active FROM tb_balance WHERE userID='$usersID'");
$cb = mysqli_fetch_assoc($cekBalance);
$saldoAktif = (int)($cb['active'] ?? 0);


/* =========================
   GENERATE TRANSAKSI
========================= */
$kode_unik = substr(str_shuffle("1234567890"),0,3);
$kd_transaksi = date('YmdHis').$kode_unik;
$created_date = date('Y-m-d H:i:s');


/* =========================
   VALIDASI PASSWORD
========================= */
if(!password_verify($password,$currentPass)){
    header('Location:../m/withdraw.php?notif=3');
    exit();
}


/* =========================
   VALIDASI MINIMAL WD
========================= */
if($nominal < $minimal_wd){
    header("Location:../m/withdraw.php?notif=minimal");
    exit();
}


/* =========================
   CEK SALDO CUKUP
========================= */
if($saldoAktif < $nominal){
    header('Location:../m/withdraw.php?notif=4');
    exit();
}


/* =========================
   CEK PENDING WD
========================= */
$cekPending = mysqli_query($conn,"SELECT cuid FROM tb_transaksi WHERE jenis=2 AND userID='$usersID' AND status=0");
if(mysqli_num_rows($cekPending) > 0){
    header('Location:../m/withdraw.php?notif=5');
    exit();
}


/* =========================
   AMBIL USERNAME API
========================= */
$getU = mysqli_query($conn,"SELECT user FROM tb_user WHERE cuid='$usersID'");
$gu = mysqli_fetch_assoc($getU);
$username = $gu['user'];


/* =========================
   REQUEST API WITHDRAW
========================= */
$hasil = $FLASHERDEV->user_withdraw($username,$nominal);
$statusAPI = strtoupper($hasil['msg'] ?? 'FAILED');

if($statusAPI !== 'SUCCESS'){
    header('Location:../m/withdraw.php?notif=6');
    exit();
}


/* =========================
   SIMPAN TRANSAKSI
========================= */
// Kolom 'metode' diisi dengan $safe_metode, dan 'note' dengan $safe_note
mysqli_query($conn,"
INSERT INTO tb_transaksi
(kd_transaksi, date, transaksi, total, saldo, note, gameid, providerID, jenis, metode, pay_from, userID, status, keterangan)
VALUES
('$kd_transaksi', '$created_date', 'Penarikan Dana', '$nominal', 0, '$safe_note', '', '0', '2', '$safe_metode', '0', '$usersID', 0, 'Menunggu Konfirmasi')
");


/* =========================
   UPDATE SALDO USER
========================= */
mysqli_query($conn,"
UPDATE tb_balance
SET active = active - $nominal,
pending = pending + $nominal
WHERE userID='$usersID'
");


/* =========================
   SUKSES
========================= */
header('Location:../m/withdraw.php?notif=1');
exit();
?>