<?php
// modules/notifications_api.php
require_once '../includes/auth.php';
if (session_status() === PHP_SESSION_NONE) { session_start(); }
require_once '../config/db.php';

header('Content-Type: application/json');

$isAdmin = isset($_SESSION['role']) && $_SESSION['role'] === 'admin';
$userId = $_SESSION['user_id'] ?? 0;

// آپدیت خودکار دیتابیس: ایجاد فیلد is_read در جدول فیش‌ها (اگر وجود نداشت)
try {
    $pdo->query("SELECT is_read FROM settlements LIMIT 1");
} catch (PDOException $e) {
    $pdo->exec("ALTER TABLE settlements ADD COLUMN is_read TINYINT(1) DEFAULT 0");
}

// مارک کردن نوتیفیکیشن‌های تایید فیش به عنوان "خوانده شده" (با کلیک روی زنگوله اجرا می‌شود)
if (isset($_GET['action']) && $_GET['action'] === 'mark_read') {
    if ($userId && !$isAdmin) {
        $pdo->prepare("UPDATE settlements SET is_read = 1 WHERE user_id = ? AND status = 'approved'")->execute([$userId]);
    }
    echo json_encode(['success' => true]);
    exit;
}

$alerts = [];
$totalCount = 0;

if ($isAdmin) {
    // ==============================================
    // بخش اعلانات مخصوص مدیریت (Admin)
    // ==============================================
    
    // 1. بررسی موجودی‌های رو به اتمام (۲ عدد و کمتر)
    try {
        $lowStockItems = $pdo->query("SELECT plan_name, volume, COUNT(*) as count FROM inventory WHERE status = 'available' GROUP BY plan_name, volume HAVING count <= 2 ORDER BY count ASC")->fetchAll();
        foreach ($lowStockItems as $item) {
            $alerts[] = [
                'title' => 'موجودی رو به اتمام',
                'text' => "طرح {$item['plan_name']} ({$item['volume']}G) فقط {$item['count']} عدد مانده!",
                'link' => '/vpnet-panel/modules/inventory/inventory.php',
                'icon' => '📦',
                'color' => 'text-red-500',
                'bg' => 'bg-red-50',
                'button' => ''
            ];
            $totalCount++;
        }
    } catch (Exception $e) {}

    // 2. بررسی فیش‌های در انتظار تایید
    try {
        $pendingReceipts = $pdo->query("SELECT COUNT(*) FROM settlements WHERE status = 'pending'")->fetchColumn();
        if ($pendingReceipts > 0) {
            $alerts[] = [
                'title' => 'فیش‌های بررسی نشده',
                'text' => "شما $pendingReceipts درخواست واریز در انتظار تایید دارید.",
                'link' => '/vpnet-panel/modules/wallet/wallet.php',
                'icon' => '💳',
                'color' => 'text-amber-600',
                'bg' => 'bg-amber-50',
                'button' => ''
            ];
            $totalCount++;
        }
    } catch (Exception $e) {}

    // 3. اعلان تیکت‌های پشتیبانی بررسی نشده (🔥 آپدیت جدید)
    try {
        $pendingTickets = $pdo->query("SELECT COUNT(*) FROM tickets WHERE status IN ('open', 'pending')")->fetchColumn();
        if ($pendingTickets > 0) {
            $alerts[] = [
                'title' => 'تیکت‌های در انتظار پاسخ',
                'text' => "شما $pendingTickets تیکت پشتیبانی (جدید یا پاسخ کاربر) برای بررسی دارید.",
                'link' => '/vpnet-panel/modules/tickets/tickets.php',
                'icon' => '🎫',
                'color' => 'text-blue-600',
                'bg' => 'bg-blue-50',
                'button' => '<div class="mt-2"><span class="inline-block px-4 py-1.5 bg-blue-500 hover:bg-blue-600 text-white text-xs font-bold rounded-lg shadow-sm transition">بررسی تیکت‌ها</span></div>'
            ];
            $totalCount++;
        }
    } catch (Exception $e) {}

} else {
    // ==============================================
    // بخش اعلانات مخصوص نمایندگان / کاربران (User)
    // ==============================================
    
    if ($userId) {
        // 1. هشدار کاهش موجودی کیف پول (کمتر از 500 هزار تومان)
        try {
            $stmt = $pdo->prepare("SELECT wallet_balance FROM users WHERE id = ?");
            $stmt->execute([$userId]);
            $balance = (int)$stmt->fetchColumn();

            if ($balance < 500000) {
                $alerts[] = [
                    'title' => '⚠️ هشدار کاهش موجودی',
                    'text' => "موجودی شما کمتر از ۵۰۰ هزار تومان است (" . number_format($balance) . " تومان). لطفاً برای جلوگیری از قطعی، حساب خود را شارژ کنید.",
                    'link' => '/vpnet-panel/modules/wallet/wallet.php',
                    'icon' => '📉',
                    'color' => 'text-rose-600',
                    'bg' => 'bg-rose-50',
                    'button' => '<div class="mt-2"><span class="inline-block px-4 py-1.5 bg-rose-500 hover:bg-rose-600 text-white text-xs font-bold rounded-lg shadow-sm transition">شارژ حساب کاربری</span></div>'
                ];
                $totalCount++;
            }
        } catch (Exception $e) {}

        // 2. اعلان تایید فیش واریزی (فقط مواردی که هنوز خوانده نشده‌اند)
        try {
            $stmt = $pdo->prepare("SELECT amount, id FROM settlements WHERE user_id = ? AND status = 'approved' AND is_read = 0 ORDER BY id DESC");
            $stmt->execute([$userId]);
            $newApprovals = $stmt->fetchAll();

            foreach ($newApprovals as $req) {
                $alerts[] = [
                    'title' => 'تایید فیش واریزی',
                    'text' => "فیش واریزی شما به مبلغ " . number_format($req['amount']) . " تومان تایید و کیف پول شما شارژ شد.",
                    'link' => '/vpnet-panel/modules/wallet/wallet.php',
                    'icon' => '✅',
                    'color' => 'text-emerald-600',
                    'bg' => 'bg-emerald-50',
                    'button' => ''
                ];
                $totalCount++;
            }
        } catch (Exception $e) {}

        // 3. اعلان پاسخ پشتیبانی به تیکت کاربر (🔥 آپدیت جدید)
        try {
            $stmt = $pdo->prepare("SELECT COUNT(*) FROM tickets WHERE user_id = ? AND status = 'answered'");
            $stmt->execute([$userId]);
            $answeredTickets = $stmt->fetchColumn();

            if ($answeredTickets > 0) {
                $alerts[] = [
                    'title' => 'پاسخ جدید پشتیبانی',
                    'text' => "شما $answeredTickets تیکت پاسخ داده شده دارید. لطفاً بررسی کنید.",
                    'link' => '/vpnet-panel/modules/tickets/tickets.php',
                    'icon' => '💬',
                    'color' => 'text-indigo-600',
                    'bg' => 'bg-indigo-50',
                    'button' => '<div class="mt-2"><span class="inline-block px-4 py-1.5 bg-indigo-500 hover:bg-indigo-600 text-white text-xs font-bold rounded-lg shadow-sm transition">مشاهده تیکت‌ها</span></div>'
                ];
                $totalCount++;
            }
        } catch (Exception $e) {}
    }
}

echo json_encode([
    'count' => $totalCount,
    'alerts' => $alerts
]);
exit;