<?php
/**
 * debug_deposit_commission.php
 * ✅ শুধু Diagnostic-এর জন্য — কোনো Data পরিবর্তন করে না।
 * এটা Agent-এর Owncode, Downline User, আর তাদের Deposit — সব
 * ধাপে ধাপে দেখাবে, ঠিক কোথায় গিয়ে হিসাব ভেঙে যাচ্ছে সেটা বুঝতে।
 *
 * ব্যবহার: Adminxxx78/debug_deposit_commission.php?agent_id=XX
 * (XX = যেই Agent-এর সমস্যা, তার userid)
 *
 * ⚠️ কাজ শেষ হলে এই ফাইলটা সার্ভার থেকে ডিলিট করে দেবেন —
 * এটা Sensitive তথ্য দেখায়, Public-এ রাখা ঠিক না।
 */
session_start();
if (!isset($_SESSION['unohs'])) {
    die("Admin Login লাগবে।");
}
include("conn.php");

$agentId = isset($_GET['agent_id']) ? intval($_GET['agent_id']) : 0;
if ($agentId <= 0) {
    die("URL-এ ?agent_id=XX যোগ করুন। যেমন: debug_deposit_commission.php?agent_id=17");
}

echo "<pre style='background:#111;color:#0f0;padding:20px;font-size:14px;line-height:1.6;'>";

echo "════════ ধাপ ১: Agent-এর তথ্য ════════\n";
$agentRow = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM tb_agent WHERE userid = '$agentId'"));
if (!$agentRow) {
    echo "❌ tb_agent-এ এই ID-র কোনো Agent পাওয়া যায়নি!\n";
    exit;
}
echo "Agent userid: {$agentRow['userid']}\n";
echo "commission_type: " . ($agentRow['commission_type'] ?? '(column নেই!)') . "\n";
echo "commission_rate: " . ($agentRow['commission_rate'] ?? '(column নেই!)') . "\n";
echo "status: {$agentRow['status']}\n\n";

echo "════════ ধাপ ২: Agent-এর নিজের Owncode ════════\n";
$subjRow = mysqli_fetch_assoc(mysqli_query($conn, "SELECT owncode, mobile FROM shonu_subjects WHERE id = '$agentId'"));
if (!$subjRow) {
    echo "❌ shonu_subjects-এ এই ID-র কোনো Record পাওয়া যায়নি!\n";
    exit;
}
$agentOwncode = $subjRow['owncode'];
echo "Agent Mobile: {$subjRow['mobile']}\n";
echo "Agent Owncode: '$agentOwncode'\n\n";

echo "════════ ধাপ ৩: এই Owncode দিয়ে Join করা Downline User ════════\n";
$downlineQ = mysqli_query($conn, "SELECT id, mobile, code FROM shonu_subjects WHERE code = '".mysqli_real_escape_string($conn, $agentOwncode)."'");
$downlineIds = [];
if (mysqli_num_rows($downlineQ) === 0) {
    echo "❌ কোনো User পাওয়া যায়নি যার 'code' = '$agentOwncode'!\n";
    echo "   এটাই সমস্যা — মানে কোনো User এই Agent-এর Owncode দিয়ে Join করেনি\n";
    echo "   (অথবা shonu_subjects.code Column-এ ভিন্ন কিছু বসে আছে)।\n\n";
} else {
    while ($r = mysqli_fetch_assoc($downlineQ)) {
        $downlineIds[] = $r['id'];
        echo "✅ Downline পাওয়া গেছে — User ID: {$r['id']}, Mobile: {$r['mobile']}, code: '{$r['code']}'\n";
    }
    echo "\n";
}

if (!empty($downlineIds)) {
    echo "════════ ধাপ ৪: এই Downline User-দের সব Deposit Record (thevani) ════════\n";
    $idList = implode(',', array_map('intval', $downlineIds));
    $depQ = mysqli_query($conn, "SELECT shonu, balakedara, motta, sthiti, dinankavannuracisi FROM thevani WHERE balakedara IN ($idList) ORDER BY shonu DESC");
    if (mysqli_num_rows($depQ) === 0) {
        echo "❌ thevani টেবিলে এই User-দের কোনো Deposit Record-ই নেই!\n";
        echo "   মানে Deposit thevani টেবিলে সংরক্ষিত হয়নি — অন্য কোনো Table/Path দিয়ে হয়েছে।\n\n";
    } else {
        $totalApproved = 0;
        while ($d = mysqli_fetch_assoc($depQ)) {
            $statusText = $d['sthiti'] === '1' ? '✅ Approved' : ($d['sthiti'] === '2' ? '❌ Rejected' : '⏳ Pending');
            echo "shonu #{$d['shonu']} | User: {$d['balakedara']} | Amount: ৳{$d['motta']} | Status: {$d['sthiti']} ($statusText) | Date: {$d['dinankavannuracisi']}\n";
            if ($d['sthiti'] === '1') { $totalApproved += floatval($d['motta']); }
        }
        echo "\n👉 মোট Approved (sthiti='1') Deposit যোগফল: ৳" . number_format($totalApproved, 2) . "\n\n";
    }
}

echo "════════ ধাপ ৫: আসল Commission Calculation যা agent_ggr_commission.php চালায় ════════\n";
if (!empty($downlineIds)) {
    $idList = implode(',', array_map('intval', $downlineIds));
    $finalRow = mysqli_fetch_assoc(mysqli_query($conn, "SELECT COALESCE(SUM(motta),0) as total FROM thevani WHERE balakedara IN ($idList) AND sthiti = '1'"));
    echo "SQL চালানো হলো: SELECT COALESCE(SUM(motta),0) FROM thevani WHERE balakedara IN ($idList) AND sthiti = '1'\n";
    echo "ফলাফল: ৳" . number_format(floatval($finalRow['total']), 2) . "\n";
} else {
    echo "Downline User-ই খুঁজে পাওয়া যায়নি, তাই এই ধাপ পর্যন্ত পৌঁছানোর প্রশ্নই নেই।\n";
}

echo "</pre>";

echo "<pre style='background:#111;color:#0f0;padding:20px;font-size:14px;line-height:1.6;'>";
echo "════════ ধাপ ৬: Server-এ আসল agent_ggr_commission.php ফাইল Check ════════\n";
$liveFilePath = __DIR__ . '/../agent/agent_ggr_commission.php';
if (!file_exists($liveFilePath)) {
    echo "❌ ফাইলটাই খুঁজে পাওয়া যায়নি: $liveFilePath\n";
    echo "   মানে agent/ folder-এ agent_ggr_commission.php নেই, বা অন্য নামে আছে।\n";
} else {
    $liveContent = file_get_contents($liveFilePath);
    $hasNewLogic = strpos($liveContent, 'MY_COMMISSION_TYPE') !== false;
    $hasDepositCalc = strpos($liveContent, 'calculate_deposit_commission') !== false;
    $fileModTime = date('Y-m-d H:i:s', filemtime($liveFilePath));

    echo "File Path: $liveFilePath\n";
    echo "সর্বশেষ পরিবর্তন হয়েছে: $fileModTime\n";
    echo "MY_COMMISSION_TYPE লজিক আছে কিনা: " . ($hasNewLogic ? "✅ হ্যাঁ, আছে" : "❌ না, নেই — এটাই সমস্যা!") . "\n";
    echo "calculate_deposit_commission() Function আছে কিনা: " . ($hasDepositCalc ? "✅ হ্যাঁ, আছে" : "❌ না, নেই — এটাই সমস্যা!") . "\n\n";

    if (!$hasNewLogic || !$hasDepositCalc) {
        echo "🔴 সিদ্ধান্ত: Server-এ পুরনো ভার্সনের ফাইল আছে। নতুন ফাইলটা Upload করলেই ঠিক হয়ে যাবে।\n";
    } else {
        echo "🟢 সিদ্ধান্ত: ফাইল ঠিক আছে, নতুন Logic-ই আছে। তাহলে সমস্যা অন্য কোথাও — এই Result আমাকে দিন।\n";
    }
}
echo "</pre>";

echo "<pre style='background:#111;color:#0f0;padding:20px;font-size:14px;line-height:1.6;'>";
echo "════════ ধাপ ৭: commission_sell_requests টেবিলে এই Agent-এর সব Entry ════════\n";
$sellReqQ = mysqli_query($conn, "SELECT id, ggr_amount, commission_amount, commission_rate, commission_type, payment_method, payment_number, status, requested_at FROM commission_sell_requests WHERE agent_userid = '$agentId' ORDER BY requested_at DESC");
if (mysqli_num_rows($sellReqQ) === 0) {
    echo "কোনো Sell Request পাওয়া যায়নি — মানে এই Agent এখনো একবারও 'Sell' বাটনে চাপেনি।\n";
    echo "তাহলে available_to_sell ৳0 হওয়ার কথা না — এটা সত্যিই একটা সমস্যা, নিচের ধাপ ৮ দেখুন।\n";
} else {
    $totalLocked = 0;
    while ($s = mysqli_fetch_assoc($sellReqQ)) {
        echo "Request #{$s['id']} | Base Amount: ৳{$s['ggr_amount']} | Commission: ৳{$s['commission_amount']} | Type: {$s['commission_type']} | Status: {$s['status']} | {$s['payment_method']} {$s['payment_number']} | {$s['requested_at']}\n";
        if (in_array($s['status'], ['pending', 'approved'])) {
            $totalLocked += floatval($s['commission_amount']);
        }
    }
    echo "\n👉 Pending+Approved মিলিয়ে মোট Locked: ৳" . number_format($totalLocked, 2) . "\n";
    echo "   (এই টাকাটাই Total Earned থেকে বাদ যায়, তাই যদি এটা পুরোটাই লক থাকে, Available ৳0 দেখানো স্বাভাবিক)\n";
}

echo "\n════════ ধাপ ৮: চূড়ান্ত হিসাব — Available to Sell আসলে কত হওয়ার কথা ════════\n";
$rateForCalc = 30.0;
$agentRowForCalc = mysqli_fetch_assoc(mysqli_query($conn, "SELECT commission_rate FROM tb_agent WHERE userid='$agentId'"));
if ($agentRowForCalc) { $rateForCalc = floatval($agentRowForCalc['commission_rate']); }
$totalDepositForCalc = 700.00; // ধাপ ৪ থেকে
$totalEarnedForCalc = round($totalDepositForCalc * ($rateForCalc/100), 2);
$lockedQ = mysqli_fetch_assoc(mysqli_query($conn, "SELECT COALESCE(SUM(commission_amount),0) as total FROM commission_sell_requests WHERE agent_userid = '$agentId' AND status IN ('pending','approved') AND commission_type = 'deposit'"));
$lockedForCalc = floatval($lockedQ['total']);
$availableForCalc = max(0, round($totalEarnedForCalc - $lockedForCalc, 2));

echo "Total Deposit (Approved): ৳" . number_format($totalDepositForCalc,2) . "\n";
echo "Commission Rate: {$rateForCalc}%\n";
echo "Total Earned (Deposit × Rate): ৳" . number_format($totalEarnedForCalc,2) . "\n";
echo "Locked (Pending+Approved, type='deposit'): ৳" . number_format($lockedForCalc,2) . "\n";
echo "চূড়ান্ত Available to Sell হওয়ার কথা: ৳" . number_format($availableForCalc,2) . "\n";

if ($availableForCalc > 0) {
    echo "\n🔴 এটা ৳0 না হওয়ার কথা! Agent Panel-এ ৳0 দেখালে সেটা সত্যিকারের বাগ — এই output আমাকে দিন, ঠিক করে দেব।\n";
} else {
    echo "\n🟢 এই হিসাব অনুযায়ী ৳0-ই সঠিক — মানে এই Commission ইতিমধ্যে Sell Request-এ চলে গেছে (Pending/Approved), তাই আর নতুন করে দেখাবে না। ধাপ ৭-এ Status 'Pending' থাকলে Admin Panel-এর commission_sell_requests.php-এ গিয়ে Approve করুন।\n";
}
echo "</pre>";
