<?php
// ═══════════════════════════════════════════════════════════
// add_agent_coin.php
// Admin থেকে Agent-এর coin balance বাড়ানোর (topup) কাজ করে।
//
// ✅ পুরনো admin_coin_generate.php ইচ্ছাকৃতভাবে বন্ধ রাখা হয়েছিলো
//    Fraud/Security ঝুঁকির কারণে — এই ফাইলটা তার বদলে, কিন্তু
//    নিচের Safeguard গুলো সহ:
//      1. প্রতি Transaction-এ সর্বোচ্চ কত Coin দেওয়া যাবে, তার Limit
//      2. প্রতিটা Add-এর জন্য agent_motta_log-এ Audit Log
//         (কোন Admin দিয়েছে সেটাও লেখা থাকবে)
//      3. শুধু Login করা Admin-ই এই Action চালাতে পারবে
// ═══════════════════════════════════════════════════════════
session_start();
if (!isset($_SESSION['unohs'])) {
    header("Location: index.php");
    exit();
}
include "conn.php";

$adminId = $_SESSION['unohs'];

if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['agent_userid']) || !isset($_POST['add_amount'])) {
    header("Location: manage_agents.php?msg=invalid");
    exit();
}

$agentUserId = intval($_POST['agent_userid']);
$addAmount   = floatval($_POST['add_amount']);

/* ══════════════════════════════════════════════════════════
   SAFEGUARD 1 — প্রতি Transaction-এ Max Limit
   দরকার হলে এই সংখ্যা বদলাতে পারবেন
   ══════════════════════════════════════════════════════════ */
define('MAX_COIN_ADD_PER_TXN', 100000);

if ($agentUserId <= 0 || $addAmount <= 0) {
    header("Location: manage_agents.php?msg=invalid");
    exit();
}

if ($addAmount > MAX_COIN_ADD_PER_TXN) {
    header("Location: manage_agents.php?msg=limit_exceeded");
    exit();
}

/* ══════════════════════════════════════════════════════════
   Agent সত্যিই Active কিনা যাচাই — যাতে ভুল/মুছে ফেলা ID-তে
   Coin চলে না যায়
   ══════════════════════════════════════════════════════════ */
$agentCheck = mysqli_query($conn, "SELECT userid FROM tb_agent WHERE userid = '".$agentUserId."' AND status = '1'");
if (!$agentCheck || mysqli_num_rows($agentCheck) === 0) {
    header("Location: manage_agents.php?msg=invalid");
    exit();
}

/* ══════════════════════════════════════════════════════════
   Wallet Row না থাকলে তৈরি করা, থাকলে Balance বাড়ানো
   ══════════════════════════════════════════════════════════ */
$existing = mysqli_query($conn, "SELECT balakedara FROM shonu_kaichila WHERE balakedara = '".$agentUserId."'");
if ($existing && mysqli_num_rows($existing) > 0) {
    $stmt = $conn->prepare("UPDATE shonu_kaichila SET motta = CAST(CAST(motta AS DECIMAL(15,2)) + ? AS CHAR) WHERE balakedara = ?");
    $stmt->bind_param("di", $addAmount, $agentUserId);
    $success = $stmt->execute();
    $stmt->close();
} else {
    $stmt = $conn->prepare("INSERT INTO shonu_kaichila (balakedara, motta, rebet, spin, bonus) VALUES (?, ?, '0', 0, '0')");
    $amtStr = (string)$addAmount;
    $stmt->bind_param("is", $agentUserId, $amtStr);
    $success = $stmt->execute();
    $stmt->close();
}

/* ══════════════════════════════════════════════════════════
   SAFEGUARD 2 — Audit Log (কে, কাকে, কত দিলো)
   ══════════════════════════════════════════════════════════ */
if ($success) {
    mysqli_query($conn,
        "INSERT INTO agent_motta_log (agent_userid, to_user, amount, type, remark)
         VALUES ('".$agentUserId."', 'admin_topup', '".floatval($addAmount)."', 'admin_coin_add', 'Admin (unohs=".$adminId.") manually topped up agent coin')"
    );
}

$conn->close();

header("Location: manage_agents.php?msg=" . ($success ? 'coin_added' : 'error'));
exit();
