<?php
/**
 * LG-Pay Callback Handler
 * Path: public_html/api/lg_callback.php
 */

require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/lg_config.php';

$data = $_POST;

if (!empty($data)) {
    $remote_sign = isset($data['sign']) ? $data['sign'] : '';
    unset($data['sign']);
    $local_sign = generate_lg_sign($data, LG_KEY);

    // সাইন ভেরিফাই করা এবং স্ট্যাটাস ১ (Paid) কিনা চেক করা
    if ($local_sign === $remote_sign && isset($data['status']) && $data['status'] == 1) {
        
        $order_sn = $conn->real_escape_string($data['order_sn']);
        $money = floatval($data['money'] / 100); 

        // [পরিবর্তন ১] ডাটাবেজ থেকে অর্ডার তথ্য চেক (amount কলামটি যুক্ত করা হলো)
        $check = $conn->query("SELECT user_id, status, promo_id, amount FROM transactions_fake WHERE order_sn = '$order_sn' LIMIT 1");
        
        if ($check && $check->num_rows > 0) {
            $row = $check->fetch_assoc();
            
            // [পরিবর্তন ২] success এর জায়গায় approved
            if ($row['status'] !== 'approved') {
                $uid = $row['user_id'];
                $promo_id = (int)$row['promo_id']; 
                $db_amount = (float)$row['amount']; // ডাটাবেস থেকে পেমেন্ট মেথড বোনাসসহ সেভ হওয়া টাকা
                
                $conn->begin_transaction();
                try {
                    // ১. ট্রানজেকশন স্ট্যাটাস আপডেট (approved)
                    $gateway_txn_id = $conn->real_escape_string($data['msg'] ?? 'SUCCESS');

                    $conn->query("UPDATE transactions_fake SET 
                        status = 'approved', 
                        lg_order_sn = '$gateway_txn_id' 
                        WHERE order_sn = '$order_sn'");
                    
                    // [পরিবর্তন ৩] ২. ডিফল্ট অ্যামাউন্ট এবং ওয়েজার
                    // এখানে গেটওয়ের $money এর বদলে ডাটাবেসের পেমেন্ট মেথড বোনাসসহ $db_amount ব্যবহার করা হলো
                    $final_deposit_amount = $db_amount;
                    $wager_to_add = $db_amount; 

                    // ৩. প্রমোশন থাকলে বোনাস ও কাস্টম ওয়েজার (আপনার অরিজিনাল লজিক)
                    if ($promo_id > 0) {
                        $settings_res = $conn->query("SELECT deposit_bonus_percent, wager_multiplier FROM settings WHERE id=1");
                        if ($settings_res && $settings_res->num_rows > 0) {
                            $settings = $settings_res->fetch_assoc();
                            $bonus_percent = (float)$settings['deposit_bonus_percent'];
                            $multiplier = (float)$settings['wager_multiplier'];

                            if ($bonus_percent > 0) {
                                // প্রমোশনাল বোনাস বেস টাকার ($money) ওপর হিসাব হবে
                                $bonus_money = ($money * $bonus_percent) / 100;
                                $final_deposit_amount += $bonus_money;
                                // বোনাসসহ মোট টাকার ওপর মাল্টিপ্লায়ার সেট
                                $wager_to_add = $final_deposit_amount * $multiplier;
                            }
                        }
                    }

                    // ৪. ইউজারের মেইন ব্যালেন্স এবং টার্নওভার টার্গেট আপডেট
                    $conn->query("UPDATE users SET 
                        balance = balance + $final_deposit_amount, 
                        turnover_target = turnover_target + $wager_to_add 
                        WHERE id = $uid");
                    
                    $conn->commit();
                    echo "ok"; // গেটওয়েকে জানানো হলো যে আমরা ডাটা পেয়েছি
                    exit();
                    
                } catch (Exception $e) {
                    $conn->rollback();
                    error_log("LG_Callback_Error: " . $e->getMessage());
                }
            } else {
                echo "ok"; // অলরেডি সাকসেস হলেও গেটওয়েকে 'ok' দিতে হয়
                exit();
            }
        }
    }
}
echo "fail"; // কোনো সমস্যা থাকলে গেটওয়ে আবার রিকোয়েস্ট পাঠাবে
?>