<?php
include 'config.php';

header("Content-Type: application/json; charset=UTF-8");
date_default_timezone_set('Asia/Dhaka');

// 🔐 ADMIN SECURE KEY (আপনার স্কেচওয়্যার অ্যাডমিন অ্যাপের সাথে মিল রাখবেন)
$ADMIN_KEY = "A9xK2LmP8QwZ7rTyU1vB";

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode([
        "status" => "error",
        "message" => "Invalid Request Method"
    ]);
    exit;
}

$type = $_POST['type'] ?? '';
$admin_key = $_POST['admin_key'] ?? '';

// 🛡️ গ্লোবাল অ্যাডমিন ভেরিফিকেশন (একমাত্র অ্যাডমিন ছাড়া কেউ এই ফাইল অ্যাক্সেস করতে পারবে না)
if ($admin_key !== $ADMIN_KEY) {
    echo json_encode([
        "status" => "error",
        "message" => "Unauthorized: Invalid Admin Key"
    ]);
    exit;
}

// ==================================================
// 1️⃣ ADMIN: GET ALL USERS COMPLETE DATA ($type === 'get_all')
// ==================================================
if ($type === 'get_all') {
    
    $sql = "SELECT * FROM users ORDER BY id DESC";
    $result = $conn->query($sql);
    
    $usersList = array();
    
    if ($result && $result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            // স্কেচওয়্যারে সংখ্যা হ্যান্ডেল করার ঝামেলা এড়াতে আইডি এবং ইন্টিজারগুলোকে স্ট্রিং করে দেওয়া হলো
            foreach ($row as $key => $value) {
                if ($value === null) {
                    $row[$key] = "";
                } else {
                    $row[$key] = strval($value);
                }
            }
            $usersList[] = $row;
        }
        echo json_encode($usersList, JSON_UNESCAPED_UNICODE);
    } else {
        echo json_encode([]);
    }
}

// ==================================================
// 2️⃣ ADMIN: CHECK SINGLE USER DATA ($type === 'get_single')
// ==================================================
elseif ($type === 'get_single') {
    
    $user_id = intval($_POST['id'] ?? 0);
    $email = $conn->real_escape_string($_POST['email'] ?? '');
    
    if ($user_id > 0) {
        $sql = "SELECT * FROM users WHERE id = $user_id LIMIT 1";
    } elseif (!empty($email)) {
        $sql = "SELECT * FROM users WHERE email = '$email' LIMIT 1";
    } else {
        echo json_encode(["status" => "error", "message" => "User ID or Email is required"]);
        exit;
    }
    
    $result = $conn->query($sql);
    
    if ($result && $result->num_rows > 0) {
        $row = $result->fetch_assoc();
        
        // সব ভ্যালু স্ট্রিং কনভার্ট (স্কেচওয়্যার সেফটি)
        foreach ($row as $key => $value) {
            if ($value === null) {
                $row[$key] = "";
            } else {
                $row[$key] = strval($value);
            }
        }
        
        echo json_encode($row, JSON_UNESCAPED_UNICODE);
    } else {
        echo json_encode(["status" => "error", "message" => "User Not Found"]);
    }
}

// ==================================================
// 3️⃣ ADMIN: EDIT/UPDATE ANY USER DATA ($type === 'edit_user')
// ==================================================
// 🔥 আপনার শর্ত অনুযায়ী: এখানে ৪৪টি কী-এর প্রতিটি চেক করার ডাইনামিক লজিক দেওয়া হলো।
elseif ($type === 'edit_user') {
    
    $id = intval($_POST['id'] ?? 0);
    
    if ($id <= 0) {
        echo json_encode(["status" => "error", "message" => "Valid User ID Required"]);
        exit;
    }
    
    // আপনার SQL ফাইলের সম্পূর্ণ ৪৪টি কলামের লিস্ট (id ছাড়া বাকি সব)
    $allowedKeys = [
        'first_name', 'last_name', 'username', 'email', 'number', 'password', 
        'balance', 'winning', 'total_paid', 'total_win', 'refer_earn', 
        'total_refer', 'fcm_key', 'device_id', 'total_play', 'total_kill', 
        'status', 'reg_date', 'refer_by', 'total_withdraw', 'verify', 
        'users_ban', 'online', 'my_refer_code', 'device_name', 'version', 
        'android', 'register_ip', 'login_ip', 'userid', 'new_old', 
        'register_date', 'total_deposit', 'otp', 'expires_at', 'created_at', 
        'max_deposit', 'avatar', 'login_attempts', 'last_attempt_date', 'block_until'
    ];
    
    $updateFields = array();
    
    // ডাইনামিকালি চেক করা হচ্ছে অ্যাডমিন অ্যাপ থেকে কোন কোন কী (Key) পাঠানো হয়েছে
    foreach ($allowedKeys as $key) {
        if (isset($_POST[$key])) {
            $value = $_POST[$key];
            
            // 🔒 যদি পাসওয়ার্ড পাঠানো হয়, তবে সেটিকে MD5 করে নেওয়া হচ্ছে
            if ($key === 'password' && !empty($value)) {
                $value = md5($value);
            }
            
            // SQL Injection থেকে বাঁচতে ইনপুট সিকিউর করা হচ্ছে
            $safeValue = $conn->real_escape_string($value);
            $updateFields[] = "`$key` = '$safeValue'";
        }
    }
    
    // যদি অ্যাডমিন কোনো কি-ই না পাঠায়
    if (empty($updateFields)) {
        echo json_encode(["status" => "error", "message" => "No fields provided to update"]);
        exit;
    }
    
    // কুয়েরি তৈরি এবং এক্সিকিউট
    $sql = "UPDATE users SET " . implode(", ", $updateFields) . " WHERE id = $id";
    
    if ($conn->query($sql)) {
        echo json_encode([
            "status" => "success",
            "message" => "User Data Updated Successfully"
        ]);
    } else {
        echo json_encode([
            "status" => "error",
            "message" => "Database Update Failed"
        ]);
    }
}

// ==================================================
// INVALID TYPE
// ==================================================
else {
    echo json_encode([
        "status" => "error",
        "message" => "Invalid Type"
    ]);
}

$conn->close();
?>
