<?php
// এই ফাইলটি আপনি সাইটে না থাকলেও ব্যাকগ্রাউন্ডে স্বয়ংক্রিয়ভাবে কাজ করবে (Cron Job এর মাধ্যমে)

include 'config.php';
include 'routeros_api.class.php'; 
date_default_timezone_set('Asia/Dhaka'); 

// মাইক্রোটেক কানেকশন ইনফো
$m_ip = "202.125.68.177"; 
$m_user = "rang@php"; 
$m_pass = "php@rang"; 
$m_port = 8729; 

// ১. ডাটাবেজ থেকে পেন্ডিং ট্রানজেকশনগুলো খুঁজে বের করা (যেখানে ref কলামে কাস্টমার আইডি আছে)
$query = "SELECT * FROM bkach_transactions WHERE status = 'pending' AND ref IS NOT NULL AND ref != ''";
$pending_transactions = mysqli_query($conn, $query);

if (mysqli_num_rows($pending_transactions) > 0) {
    
    $api = new RouterosAPI();
    
    // মাইক্রোটিকে কানেক্ট করা
    if ($api->connect($m_ip, $m_user, $m_pass, $m_port)) {
        
        while ($trx = mysqli_fetch_assoc($pending_transactions)) {
            $trx_db_id = $trx['id']; // bkach_transactions টেবিলের প্রাইমারি আইডি
            $ref_input = trim($trx['ref']); // কাস্টমারের দেওয়া মূল রেফারেন্স
            $amount = floatval($trx['amount']); // বিকাশে পাঠানো টাকা
            $trx_id = mysqli_real_escape_string($conn, $trx['trxid']);
            $today_time = date('Y-m-d H:i:s');
            
            // --- কাস্টমার আইডি ফরম্যাটিং লজিক ---
            // যদি রেফারেন্সটি সম্পূর্ণ সংখ্যা (Numeric) হয়
            if (is_numeric($ref_input)) {
                // যদি রেফারেন্সের দৈর্ঘ্য ৪ ডিজিটের বেশি হয় এবং শুরুতে ১৯ বা ২০ থাকে (যেমন: 19981, 20261)
                if (strlen($ref_input) > 4 && (substr($ref_input, 0, 2) == '19' || substr($ref_input, 0, 2) == '20')) {
                    // প্রথম ৪ ডিজিট (বছর) বাদ দিয়ে বাকি অংশটুকু নেওয়া হচ্ছে
                    $pure_id = substr($ref_input, 4); 
                } else {
                    $pure_id = $ref_input;
                }
                // সামনে 'RANG' যুক্ত করে স্ট্যান্ডার্ড ফরম্যাটে রূপান্তর
                $cid = "RANG" . $pure_id; 
            } else {
                // কাস্টমার যদি সরাসরি RANG1 বা অন্য কিছু লিখে, তবে যা আছে তাই থাকবে
                $cid = $ref_input; 
            }
            
            $cid = mysqli_real_escape_string($conn, $cid);
            // ----------------------------------

            // কাস্টমারটি আপনার সিস্টেমে আসলেই আছে কিনা তা চেক করা
            $cust_res = mysqli_query($conn, "SELECT name, phone, expiry_date, bill_amount FROM customers WHERE customer_id = '$cid'");
            
            if (mysqli_num_rows($cust_res) > 0) {
                $user_info = mysqli_fetch_assoc($cust_res);
                $cust_name = $user_info['name'];
                $cust_phone = $user_info['phone'];
                $current_expiry = $user_info['expiry_date'];
                $bill_amount = floatval($user_info['bill_amount']); // কাস্টমারের আসল মাসিক বিল
                
                // শর্ত: কাস্টমার যদি বিলের চেয়ে কম টাকা পাঠায়
                if ($amount < $bill_amount) {
                    // স্ট্যাটাস pending থেকে low_balance করা হলো
                    mysqli_query($conn, "UPDATE bkach_transactions SET status = 'low_balance' WHERE id = '$trx_db_id'");
                    echo "কাস্টমার $cid বিলের চেয়ে কম টাকা পাঠিয়েছেন (বিল: $bill_amount, পাঠিয়েছেন: $amount)। স্ট্যাটাস low_balance করা হয়েছে।<br>";
                    continue; // এই কাস্টমারের বাকি প্রসেস স্কিপ করে পরের ট্রানজেকশনে চলে যাবে
                }
                
                // ক) মাইক্রোটিকে ইউজার একটিভ করা
                $api->comm("/ppp/secret/set", array("numbers" => $cid, "disabled" => "no"));
                
                // খ) মূল 'transactions' টেবিলে হিস্ট্রি সেভ করা
                mysqli_query($conn, "INSERT INTO transactions (customer_id, amount, payment_method, trx_id, payment_date) 
                                    VALUES ('$cid', '$amount', 'bKash', '$trx_id', '$today_time')");
                
                // গ) কাস্টমারের এক্সপায়ারি ডেট (তারিখ ঠিক রেখে শুধু ১ মাস বাড়ানো) এবং স্ট্যাটাস Active করা
                mysqli_query($conn, "UPDATE customers SET 
                                    status='active', 
                                    expiry_date = DATE_ADD('$current_expiry', INTERVAL 1 MONTH) 
                                    WHERE customer_id = '$cid'");
                
                // নতুন এক্সপায়ারি ডেটটি এসএমএস এ পাঠানোর জন্য ডাটাবেজ থেকে আবার রিফ্রেশ করে নেওয়া
                $updated_cust_res = mysqli_query($conn, "SELECT expiry_date FROM customers WHERE customer_id = '$cid'");
                $updated_user_info = mysqli_fetch_assoc($updated_cust_res);
                $new_expiry = date("d-M-Y", strtotime($updated_user_info['expiry_date']));
                
                // ঘ) 'bkach_transactions' টেবিলে স্ট্যাটাস 'pending' থেকে 'complete' করা
                mysqli_query($conn, "UPDATE bkach_transactions SET status = 'complete' WHERE id = '$trx_db_id'");
                
                // ঙ) কাস্টমারকে স্বয়ংক্রিয়ভাবে SMS পাঠানো
                if (!empty($cust_phone)) {
                    $msg = "Dear\n$cust_name\nYour internet bill of $amount taka has been paid\nYour next connection will expire on $new_expiry .\nIf you have any complain about your bill and connection.\nplease call this number:\n01724565235\n01836513053\n01624445842\n\nThanks For Using Rangdhanu Internet.";
                    
                    $api_key = "bqyPSfigjl5k9Fn1cZW4";
                    $sender_id = "8809648908043";
                    $sms_url = "http://bulksmsbd.net/api/smsapi?api_key=" . urlencode($api_key) . "&type=text&number=" . urlencode($cust_phone) . "&senderid=" . urlencode($sender_id) . "&message=" . urlencode($msg);
                    
                    $response = @file_get_contents($sms_url);
                    
                    // SMS লগ রাখার জন্য কুয়েরি
                    $safe_msg = mysqli_real_escape_string($conn, $msg);
                    $safe_response = mysqli_real_escape_string($conn, $response);
                    
                    mysqli_query($conn, "INSERT INTO sms_logs (customer_id, phone, message, status, response_text, cost, sent_at) 
                                        VALUES ('$cid', '$cust_phone', '$safe_msg', 'success', '$safe_response', '0.00', '$today_time')");
                }
                
                echo "কাস্টমার $cid সফলভাবে একটিভ হয়েছে এবং ট্রানজেকশন কমপ্লিট হয়েছে।<br>";
            } else {
                // কাস্টমার আইডি সিস্টেমে না পাওয়া গেলে bkach_transactions টেবিলে স্ট্যাটাস 'rong_id' করা হবে
                mysqli_query($conn, "UPDATE bkach_transactions SET status = 'rong_id' WHERE id = '$trx_db_id'");
                echo "ভুল রেফারেন্স! কাস্টমার আইডি: $cid সিস্টেমে পাওয়া যায়নি। স্ট্যাটাস rong_id করা হয়েছে।<br>";
            }
        }
        $api->disconnect();
    } else {
        echo "মাইক্রোটেক রাউটারের সাথে কানেক্ট করা সম্ভব হয়নি।";
    }
} else {
    echo "কোনো পেন্ডিং বিকাশ ট্রানজেকশন পাওয়া যায়নি।";
}
?>
