<?php
// ================= تنظیمات اولیه =================
$telegram_token = "8785401295:AAFpZ_e0EkJULMv9BmMcJD3bBSvv1tZ4vKE"; 
$chat_id = "812870519"; 
$admin_email = "weborsy@gmail.com"; 

// لیست دسته‌بندی‌هایی که می‌خواهید مانیتور کنید
$categories = [
    [
        'name' => 'سازهای بادی',
        'url' => 'https://www.sornashop.com/product-category/musical-instruments/wind-instruments/',
        'file' => __DIR__ . '/data_wind_instruments.json'
    ]
];

// ================= تابع ارسال به تلگرام =================
function send_to_telegram($token, $chat_id, $text, $image_url = null, $product_url = null) {
    $tg_api = "https://telegramproxy.pooyamhmd.workers.dev/bot{$token}/";
    
    if ($image_url && $product_url) {
        $url = $tg_api . "sendPhoto";
        $keyboard = [
            'inline_keyboard' => [
                [
                    ['text' => '🛒 مشاهده در سایت', 'url' => $product_url]
                ]
            ]
        ];
        $post_fields = [
            'chat_id' => $chat_id,
            'photo' => $image_url,
            'caption' => $text,
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode($keyboard)
        ];
    } else {
        $url = $tg_api . "sendMessage";
        $post_fields = [
            'chat_id' => $chat_id,
            'text' => $text,
            'parse_mode' => 'HTML'
        ];
    }

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_exec($ch);
    curl_close($ch);
}

// ================= تابع دریافت سورس سایت =================
function get_html($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    $html = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if($http_code == 404) return false;
    return $html;
}

$master_email_log = "";
$any_changes_global = false;

// ================= حلقه بررسی دسته‌بندی‌ها =================
foreach ($categories as $cat) {
    $base_url = $cat['url'];
    $category_name = $cat['name'];
    $data_file = $cat['file'];

    $current_data = [];
    $total_count = 0;
    $in_stock_count = 0;
    $out_of_stock_count = 0;

    for ($page = 1; $page <= 100; $page++) {
        $url = ($page == 1) ? $base_url : $base_url . "page/{$page}/";
        $html = get_html($url);
        
        if(!$html || strpos($html, 'هیچ محصولی یافت نشد') !== false) {
            break; 
        }

        $dom = new DOMDocument();
        @$dom->loadHTML('<?xml encoding="UTF-8">' . $html);
        $xpath = new DOMXPath($dom);

        $products = $xpath->query("//div[contains(@class, 'product-grid-item')]");
        if ($products->length == 0) break;

        foreach ($products as $product) {
            $total_count++;
            
            $title_node = $xpath->query(".//h3[contains(@class, 'wd-entities-title')]/a", $product)->item(0);
            $title = $title_node ? trim($title_node->nodeValue) : "محصول ناشناس";
            $product_link = $title_node ? $title_node->getAttribute('href') : "";
            
            $img_node = $xpath->query(".//div[contains(@class, 'product-element-top')]//img", $product)->item(0);
            $image_src = $img_node ? $img_node->getAttribute('src') : "";
            
            $sku_node = $xpath->query(".//*[contains(@class, 'product-meta')]", $product)->item(0);
            $sku = $sku_node ? trim(str_replace('Code :', '', strip_tags($sku_node->nodeValue))) : "نامشخص";
            
            $price_node = $xpath->query(".//span[contains(@class, 'price')]", $product)->item(0);
            $price = $price_node ? preg_replace('/\s+/', ' ', trim(strip_tags($price_node->nodeValue))) : "نامشخص";
            
            $class_attribute = $product->getAttribute('class');
            if (strpos($class_attribute, 'outofstock') !== false) {
                $stock_status = "ناموجود";
                $out_of_stock_count++;
            } else {
                $stock_status = "موجود";
                $in_stock_count++;
            }
            
            $current_data[$title] = [
                'sku' => $sku,
                'price' => $price,
                'stock' => $stock_status,
                'link' => $product_link,
                'image' => $image_src
            ];
        }
        
        sleep(rand(1, 2)); 
    }

    // ================= مقایسه اطلاعات این دسته =================
    $changes_found_in_cat = false;
    $category_email_log = "";
    $old_data = file_exists($data_file) ? json_decode(file_get_contents($data_file), true) : [];

    // شرط امنیتی: فقط در صورتی مقایسه کن که سایت قطع نباشد (دیتا دریافت شده باشد)
    if (!empty($old_data) && !empty($current_data)) {
        
        // ۱. بررسی تغییر قیمت، موجودی و محصولات جدید
        foreach ($current_data as $title => $data) {
            $change_text = "";
            
            if (isset($old_data[$title])) {
                $old_price = $old_data[$title]['price'];
                $old_stock = $old_data[$title]['stock'];
                
                if ($old_price !== $data['price']) {
                    $change_text .= "💰 <b>تغییر قیمت:</b>\nقدیم: <code>{$old_price}</code>\n⬅️ جدید: <code>{$data['price']}</code>\n";
                }
                if ($old_stock !== $data['stock']) {
                    $change_text .= "📦 <b>تغییر موجودی:</b> از {$old_stock} به ⬅️ {$data['stock']}\n";
                }
            } else {
                $change_text .= "🆕 <b>محصول جدید اضافه شد</b>\n💰 قیمت: <code>{$data['price']}</code>\n";
            }
            
            if ($change_text !== "") {
                $any_changes_global = true;
                $changes_found_in_cat = true;
                
                $caption = "📂 <b>دسته: {$category_name}</b>\n";
                $caption .= "<b>{$title}</b>\n";
                $caption .= "🔖 کد کالا (SKU): {$data['sku']}\n\n";
                $caption .= $change_text;
                
                send_to_telegram($telegram_token, $chat_id, $caption, $data['image'], $data['link']);
                
                $category_email_log .= "   - محصول: {$title}\n";
                $category_email_log .= "     کد (SKU): {$data['sku']}\n";
                $category_email_log .= "     " . strip_tags(str_replace(['<b>', '</b>'], '', $change_text)) . "\n";
                
                usleep(300000); 
            }
        }

        // ۲. بررسی محصولات حذف شده (در لیست قدیم هست اما در سایت نیست)
        foreach ($old_data as $title => $old_item) {
            if (!isset($current_data[$title])) {
                $change_text = "🗑 <b>محصول از سایت حذف شد!</b>\nآخرین قیمت ثبت شده: <code>{$old_item['price']}</code>\n";
                
                $any_changes_global = true;
                $changes_found_in_cat = true;
                
                $caption = "📂 <b>دسته: {$category_name}</b>\n";
                $caption .= "<b>{$title}</b>\n";
                $caption .= "🔖 کد کالا (SKU): {$old_item['sku']}\n\n";
                $caption .= $change_text;
                
                // برای محصول حذف شده فقط متن می‌فرستیم (چون عکسش احتمالاً پاک شده)
                send_to_telegram($telegram_token, $chat_id, $caption);
                
                $category_email_log .= "   - محصول: {$title}\n";
                $category_email_log .= "     کد (SKU): {$old_item['sku']}\n";
                $category_email_log .= "     محصول کلاً از سایت حذف شد!\n";
                
                usleep(300000);
            }
        }

    } elseif (empty($old_data) && !empty($current_data)) {
        // اجرای اول برای این دسته
        $welcome_msg = "✅ ربات برای دسته <b>{$category_name}</b> متصل شد و دیتابیس اولیه ساخته شد.";
        send_to_telegram($telegram_token, $chat_id, $welcome_msg);
        $any_changes_global = true;
        $category_email_log .= "   - دیتابیس اولیه این دسته با موفقیت ساخته شد.\n";
    }

    // ذخیره وضعیت جدید فقط اگر دیتا با موفقیت لود شده باشد
    if (!empty($current_data)) {
        file_put_contents($data_file, json_encode($current_data, JSON_UNESCAPED_UNICODE));
    }

    if ($changes_found_in_cat || empty($old_data)) {
        $stats = "📊 <b>آمار دسته «{$category_name}»</b>\n";
        $stats .= "🔹 کل محصولات: {$total_count}\n";
        $stats .= "✅ موجود: {$in_stock_count}\n";
        $stats .= "❌ ناموجود: {$out_of_stock_count}\n";
        
        send_to_telegram($telegram_token, $chat_id, $stats);

        $master_email_log .= "📁 دسته‌بندی: {$category_name}\n";
        $master_email_log .= $category_email_log;
        $master_email_log .= "مجموع محصولات: {$total_count} (موجود: {$in_stock_count} | ناموجود: {$out_of_stock_count})\n";
        $master_email_log .= "----------------------------------------\n\n";
    }
}

// ================= ارسال ایمیل تجمیعی نهایی =================
if ($any_changes_global) {
    $email_subject = "گزارش تغییرات محصولات فروشگاه (" . date('Y-m-d H:i') . ")";
    $email_body = "گزارش جامع تغییرات قیمت و موجودی دسته‌بندی‌های رصد شده:\n\n" . $master_email_log;
    
    // رفع خطای SERVER_NAME در اجرای کرون‌جاب
    $headers = "From: monitor@mo.demoz.ir\r\n";
    $headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
    @mail($admin_email, $email_subject, $email_body, $headers);
    
    echo "تمام دسته‌بندی‌ها بررسی شدند و گزارش‌ها ارسال گردید.";
} else {
    echo "تمام دسته‌بندی‌ها بررسی شدند، اما هیچ تغییری در هیچ‌کدام یافت نشد.";
}
?>