<?php
/**
 * ═══════════════════════════════════════════════════════════
 * withdraw_ban_middleware.php
 *
 * এটা একটা স্বতন্ত্র (Standalone) Middleware/Hook File।
 * তোমার Existing Withdraw File-এ শুধু এই ১ লাইন যোগ করলেই
 * কাজ করবে (Withdraw Logic শুরু হওয়ার আগেই, User ID পাওয়ার পর):
 *
 *     require_once __DIR__ . '/withdraw_ban_middleware.php';
 *     $__banCheck = checkWithdrawBan($conn, $shonuid);
 *     if ($__banCheck !== null) {
 *         echo json_encode($__banCheck);
 *         exit;
 *     }
 *
 * এই File নিজে থেকে কিছু Output করে না, কোনো Session/Global
 * Variable বদলায় না — শুধু একটা Function Define করে, যেটা
 * Call করলে ফলাফল (Ban আছে কি নেই) ফেরত দেয়।
 *
 * Security: SQL Injection এড়াতে Prepared Statement ব্যবহার
 * করা হয়েছে। XSS/CSRF এই Layer-এ প্রযোজ্য না (এটা কোনো HTML
 * Output করে না, শুধু JSON API Response তৈরি করে)।
 * ═══════════════════════════════════════════════════════════
 */

if (!function_exists('checkWithdrawBan')) {

    /**
     * নির্দিষ্ট User Withdraw-Banned কিনা Check করে।
     *
     * @param mysqli $conn      Database Connection (Existing Connection ব্যবহার হয়, নতুন কিছু খোলা হয় না)
     * @param int    $userId    যেই User-এর জন্য Check করা হবে
     * @return array|null       Ban থাকলে Error-Response Array, না থাকলে null (মানে Withdraw চালিয়ে যাওয়া নিরাপদ)
     */
    function checkWithdrawBan($conn, $userId) {
        // ✅ SQL Injection প্রতিরোধ — Prepared Statement + Bind Parameter
        $stmt = $conn->prepare("SELECT withdraw_ban, ban_message FROM shonu_subjects WHERE id = ?");
        if (!$stmt) {
            // Column এখনো তৈরি না হয়ে থাকলে (SQL চালানো না থাকলে), Safe Fallback —
            // Withdraw Ban Feature কাজ করবে না ঠিকই, কিন্তু Existing Withdraw
            // ভেঙে যাবে না (Fail-Safe Design)
            return null;
        }
        $stmt->bind_param("i", $userId);
        $stmt->execute();
        $result = $stmt->get_result();
        $row = $result ? $result->fetch_assoc() : null;
        $stmt->close();

        if ($row && intval($row['withdraw_ban']) === 1) {
            $customMessage = !empty($row['ban_message'])
                ? $row['ban_message']
                : 'আপনার অ্যাকাউন্টে বর্তমানে Withdraw সীমাবদ্ধ করা হয়েছে। অনুগ্রহ করে সাপোর্টের সাথে যোগাযোগ করুন।';

            return [
                "code" => 1,
                "msg" => $customMessage
            ];
        }

        return null; // Ban নেই — Withdraw স্বাভাবিকভাবে চলবে
    }
}
