<?php
/**
 * check_wagering_requirement.php
 * ✅ ঠিক করা হলো — আগে শুধু "সর্বশেষ" Deposit Check হতো।
 * এখন সঠিকভাবে — শেষ সফল Withdraw-এর পর থেকে (বা প্রথমবার
 * হলে, শুরু থেকে) যত Deposit হয়েছে, সব একসাথে যোগ হয়ে
 * Requirement তৈরি হয় — প্রতিটা Deposit-ই আলাদাভাবে "Active"
 * হয়ে যোগ হয়, যেমনটা চাওয়া হয়েছে।
 */
include __DIR__ . "/deepanshu/conn.php";
include __DIR__ . "/deepanshu/functions2.php";
header('Content-Type: application/json; charset=utf-8');

$bearer = explode(" ", $_SERVER['HTTP_AUTHORIZATION'] ?? '');
$author = $bearer[1] ?? '';
$is_jwt_valid = is_jwt_valid($author);
$data_auth = json_decode($is_jwt_valid, true);

if (($data_auth['status'] ?? '') !== 'Success') {
    echo json_encode(['code' => 1, 'msg' => 'Login করা নেই']);
    exit;
}

$userId = $data_auth['payload']['id'];

// ═══════════════════════════════════════════════════════════
// ✅ নতুন যোগ — প্রথমে Check করা, User-এর কোনো Active
// (এখনো পূরণ না হওয়া) First-Deposit-Bonus-Wagering আছে কিনা।
// থাকলে, এটাই আগে পূরণ করতে হবে (Normal-Wagering-এর আগে)
// ═══════════════════════════════════════════════════════════
$bonusTableCheck = $conn->query("SHOW TABLES LIKE 'first_deposit_bonus_claims'");
if ($bonusTableCheck && $bonusTableCheck->num_rows > 0) {
    $bonusCheckStmt = $conn->prepare("SELECT id, required_wager, created_at FROM first_deposit_bonus_claims WHERE user_id = ? AND status = 'active' LIMIT 1");
    $bonusCheckStmt->bind_param("s", $userId);
    $bonusCheckStmt->execute();
    $bonusResult = $bonusCheckStmt->get_result();

    if ($bonusResult->num_rows > 0) {
        $bonusRow = $bonusResult->fetch_assoc();
        $bonusRequiredWager = (float)$bonusRow['required_wager'];
        $bonusClaimTime = $bonusRow['created_at'];

        $bonusBetStmt = $conn->prepare("SELECT SUM(bet_amount) as total_bet FROM game_bet_logs WHERE user_id = ? AND created_at >= ?");
        $bonusBetStmt->bind_param("ss", $userId, $bonusClaimTime);
        $bonusBetStmt->execute();
        $bonusBetRow = $bonusBetStmt->get_result()->fetch_assoc();
        $bonusCurrentBet = round((float)($bonusBetRow['total_bet'] ?? 0), 2);

        if ($bonusCurrentBet < $bonusRequiredWager) {
            $bonusRemaining = round($bonusRequiredWager - $bonusCurrentBet, 2);
            echo json_encode([
                'code' => 0,
                'eligible' => false,
                'is_bonus_requirement' => true,
                'required_win' => $bonusRequiredWager,
                'current_win' => $bonusCurrentBet,
                'remaining_win' => $bonusRemaining,
                'deposit_amount' => $bonusRequiredWager,
                'msg' => "তুমি ১৫০% Bonus নিয়েছিলে — Withdraw করতে হলে, ৳$bonusRequiredWager Bet করতে হবে। আরও ৳$bonusRemaining Bet করতে হবে।"
            ]);
            exit;
        } else {
            // ✅ Bonus-Wagering পূরণ হয়ে গেছে — Complete করে দেওয়া (আর কখনো আটকাবে না)
            $completeStmt = $conn->prepare("UPDATE first_deposit_bonus_claims SET status = 'completed' WHERE id = ?");
            $completeStmt->bind_param("i", $bonusRow['id']);
            $completeStmt->execute();
        }
    }
}

// ✅ ধাপ ১ — শেষ সফল Withdraw কখন হয়েছিল, তা বের করা
// (sthiti = 1 মানে সফল, hintegedukolli = Withdraw-Table)
$lastWithdrawStmt = $conn->prepare("SELECT dinankavannuracisi FROM hintegedukolli WHERE balakedara = ? AND sthiti = 1 ORDER BY shonu DESC LIMIT 1");
$lastWithdrawStmt->bind_param("s", $userId);
$lastWithdrawStmt->execute();
$lastWithdrawResult = $lastWithdrawStmt->get_result();

// ✅ যদি আগে কখনো Withdraw না করে থাকে, তাহলে "খুব পুরনো তারিখ"
// থেকে (Account-এর একদম শুরু থেকে) সব Deposit ধরা হবে
$sinceTime = '2000-01-01 00:00:00';
if ($lastWithdrawResult->num_rows > 0) {
    $lastWithdrawRow = $lastWithdrawResult->fetch_assoc();
    $sinceTime = $lastWithdrawRow['dinankavannuracisi'];
}

// ✅ ধাপ ২ — সেই সময়ের পর থেকে, মোট কত টাকা Deposit হয়েছে
// (প্রতিটা Deposit-ই যোগ হচ্ছে, শুধু "সর্বশেষ"টা না)
$depositStmt = $conn->prepare("SELECT SUM(motta) as total_deposit FROM thevani WHERE balakedara = ? AND sthiti = 1 AND dinankavannuracisi >= ?");
$depositStmt->bind_param("ss", $userId, $sinceTime);
$depositStmt->execute();
$depositResult = $depositStmt->get_result();
$depositRow = $depositResult->fetch_assoc();
$totalDepositAmount = round((float)($depositRow['total_deposit'] ?? 0), 2);

if ($totalDepositAmount <= 0) {
    echo json_encode([
        'code' => 1,
        'msg' => 'তোমার কোনো নতুন Deposit-History পাওয়া যায়নি, তাই এখনো Withdraw করা যাবে না',
        'eligible' => false,
        'required_win' => 0,
        'current_win' => 0,
        'deposit_amount' => 0
    ]);
    exit;
}

// ✅ ধাপ ৩ — একই সময় থেকে, মোট কত টাকা "Win" করেছে
$winStmt = $conn->prepare("SELECT SUM(win_amount) as total_win FROM game_bet_logs WHERE user_id = ? AND created_at >= ?");
$winStmt->bind_param("ss", $userId, $sinceTime);
$winStmt->execute();
$winResult = $winStmt->get_result();
$winRow = $winResult->fetch_assoc();
$currentWinAmount = round((float)($winRow['total_win'] ?? 0), 2);

$requiredWinAmount = $totalDepositAmount; // ১০০% (Deposit-এর সমান)
$eligible = $currentWinAmount >= $requiredWinAmount;
$remaining = max(0, round($requiredWinAmount - $currentWinAmount, 2));

echo json_encode([
    'code' => 0,
    'eligible' => $eligible,
    'deposit_amount' => $totalDepositAmount,
    'required_win' => $requiredWinAmount,
    'current_win' => $currentWinAmount,
    'remaining_win' => $remaining,
    'msg' => $eligible
        ? 'Wagering-Requirement পূরণ হয়েছে, তুমি Withdraw করতে পারবে'
        : "তোমার মোট Deposit (৳$totalDepositAmount)-এর সমান Win করতে হবে Withdraw করার আগে। আরও ৳$remaining Win করতে হবে।"
]);
