<?php 
// 1. تنظیمات نمایش خطا (برای دیباگ)
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE);
ini_set('display_errors', 0);

include_once '../baseInfo.php';
include_once '../config.php';
include_once 'jdf.php';
include_once 'values.php';
global $buttonValues;

// 2. دریافت ورودی (ممکن است خالی باشد اگر توسط Cron اجرا شود)
$input = file_get_contents("php://input");
$update = json_decode($input, true);

// اگر ورودی وب‌هوک بود (پیام جدید تلگرام)، نرخ دلار را آپدیت کن
if (!is_null($update) && isset($update['message'])) {
    $rateLimit = $botState['rateLimit'] ?? 0;
    if(time() > $rateLimit){
        // دریافت قیمت ارز
        $rateContent = @file_get_contents("https://api.pooleno.ir/v1/currency/short-name/trx?type=buy");
        if($rateContent){
            $rate = json_decode($rateContent, true);
            if(isset($rate['priceUsdt'])){
                $botState['USDRate'] = round($rate['priceUsdt'], 2);
                $botState['TRXRate'] = round($rate['priceFiat'] / 10, 2);
                $botState['rateLimit'] = strtotime("+1 hour");
                
                $newData = json_encode($botState);
                
                // ذخیره در دیتابیس (با بررسی وجود رکورد)
                $stmt = $connection->prepare("SELECT `id` FROM `setting` WHERE `type` = 'BOT_STATES'");
                $stmt->execute();
                $res = $stmt->get_result();
                $stmt->close();
                
                if($res->num_rows > 0) 
                    $query = "UPDATE `setting` SET `value` = ? WHERE `type` = 'BOT_STATES'";
                else 
                    $query = "INSERT INTO `setting` (`type`, `value`) VALUES ('BOT_STATES', ?)";
                
                $stmt = $connection->prepare($query);
                $stmt->bind_param("s", $newData);
                $stmt->execute();
                $stmt->close();
            }
        }
    }
}

// ======================================================
// بخش اصلی ارسال همگانی (Cron Job Logic)
// ======================================================

// 3. بررسی اینکه آیا پیامی در صف ارسال هست؟
$stmt = $connection->prepare("SELECT * FROM `send_list` WHERE `state` = 1 LIMIT 1");
$stmt->execute();
$list = $stmt->get_result();
$stmt->close();

if($list->num_rows > 0){
    $info = $list->fetch_assoc();
    
    $sendId = $info['id'];
    $offset = $info['offset'];
    $type = $info['type'];
    $file_id = $info['file_id'];
    $chat_id = $info['chat_id'];
    $text = $info['text'];
    $message_id = $info['message_id'];
    
    // اگر شروع کار است، به ادمین خبر بده
    if($offset == 0){
        $msg = ($type == "forwardall") ? "عملیات هدایت همگانی شروع شد" : "عملیات ارسال پیام همگانی شروع شد";
        bot('sendMessage',[
            'chat_id' => $admin,
            'text' => $msg
        ]);
    }
    
    // دریافت 50 کاربر بعدی
    $stmt = $connection->prepare("SELECT `userid` FROM `users` ORDER BY `id` ASC LIMIT 50 OFFSET ?");
    $stmt->bind_param("i", $offset);
    $stmt->execute();
    $usersList = $stmt->get_result();
    $stmt->close();
    
    $keys = json_encode([
        'inline_keyboard' => [
            [['text' => $buttonValues['start_bot'], 'callback_data' => "mainMenu"]]
        ]
    ]);

    if($usersList->num_rows > 0) {
        while($user = $usersList->fetch_assoc()){
            $uid = $user['userid'];
            
            if($type == "forwardall"){
                forwardmessage($uid, $chat_id, $message_id);
            } else {
                $method = 'sendMessage';
                $data = [
                    'chat_id' => $uid,
                    'caption' => $text,
                    'reply_markup' => $keys,
                    'parse_mode' => 'HTML'
                ];

                if($type == 'text'){
                    $data['text'] = $text;
                    unset($data['caption']);
                } elseif($type == 'photo'){
                    $method = 'sendPhoto';
                    $data['photo'] = $file_id;
                } elseif($type == 'video'){
                    $method = 'sendVideo';
                    $data['video'] = $file_id;
                } elseif($type == 'voice'){
                    $method = 'sendVoice';
                    $data['voice'] = $file_id;
                } elseif($type == 'audio' || $type == 'music'){
                    $method = 'sendAudio';
                    $data['audio'] = $file_id;
                } elseif($type == 'document'){
                    $method = 'sendDocument';
                    $data['document'] = $file_id;
                } else {
                    // Fallback for unknown type
                    $method = 'sendDocument';
                    $data['document'] = $file_id;
                }
                
                bot($method, $data);
            }
            $offset++;
        }
        
        // ذخیره پیشرفت (Offset)
        $stmt = $connection->prepare("UPDATE `send_list` SET `offset` = ? WHERE `id` = ?");
        $stmt->bind_param("ii", $offset, $sendId);
        $stmt->execute();
        $stmt->close();
        
    } else {
        // پایان لیست کاربران (اتمام ارسال)
        $msg = ($type == "forwardall") ? "عملیات هدایت همگانی با موفقیت انجام شد" : "عملیات ارسال پیام همگانی با موفقیت انجام شد";
        
        bot('sendMessage',[
            'chat_id' => $admin,
            'text' => $msg . "\nبه " . $offset . " نفر پیامتو فرستادم"
        ]);
            
        // حذف از صف
        $stmt = $connection->prepare("DELETE FROM `send_list` WHERE `id` = ?");
        $stmt->bind_param('i', $sendId);
        $stmt->execute();
        $stmt->close();
    }
}
?>