<?php
// modules/inventory/inventory.php
if (session_status() === PHP_SESSION_NONE) { session_start(); }

// ==========================================
// 🛡️ دروازه امنیتی اختصاصی انبار (Live Sync Proxy)
// حل قطعی خطای خروجی نامعتبر با استفاده از ob_clean
// ==========================================
if (isset($_GET['inv_ajax'])) {
    ob_start(); // شروع بافر خروجی برای جلوگیری از چاپ اخطارهای مزاحم PHP
    
    require_once '../../includes/auth.php';
    if (!isAdmin()) { 
        ob_clean(); header('Content-Type: application/json');
        echo json_encode(['code' => 401, 'error' => 'Unauthorized']); exit; 
    }
    
    require_once '../pasarguard/pasarguard_api.php';
    
    $action = $_GET['inv_ajax'];
    
    if ($action === 'get_user') {
        $username = trim($_GET['username'] ?? '');
        $serverId = $_GET['server_id'] ?? 1;
        
        $tokenRes = getPsgApiToken($serverId);
        if (!$tokenRes['success']) { 
            ob_clean(); header('Content-Type: application/json');
            echo json_encode(['code' => 500, 'error' => 'ارتباط با سرور قطع است']); exit; 
        }
        
        $res = executePsgApiCall($tokenRes['server_url'], "/api/user/" . urlencode($username), "GET", null, $tokenRes['token']);
        if (is_string($res)) { $res = json_decode($res, true); }
        
        ob_clean(); // پاک کردن هرگونه کاراکتر اضافی قبل از چاپ JSON
        header('Content-Type: application/json');
        if (is_array($res)) {
            if (!isset($res['code'])) $res['code'] = 200; 
            echo json_encode($res);
        } else { 
            echo json_encode(['code' => 500, 'error' => 'پاسخ نامعتبر از سرور']); 
        }
        exit;
    }
    
    if ($action === 'get_sub_links') {
        $subUrl = $_GET['sub_url'] ?? '';
        if (!empty($subUrl)) {
            $ch = curl_init($subUrl);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, ["User-Agent: VPNet-Panel"]);
            $response = curl_exec($ch); curl_close($ch);
            
            ob_clean(); header('Content-Type: application/json');
            if ($response) {
                $decoded = base64_decode(trim($response), true);
                $content = $decoded ? $decoded : $response;
                $links = array_filter(explode("\n", str_replace("\r", "", $content)));
                echo json_encode(array_values($links)); exit;
            }
        }
        ob_clean(); header('Content-Type: application/json');
        echo json_encode([]); exit;
    }
    exit;
}

// ==========================================
// لود صفحه اصلی و توابع پایه
// ==========================================
require_once '../../includes/auth.php';
checkLogin();

// دسترسی فقط برای ادمین
if (!isAdmin()) {
    header("Location: ../dashboard.php");
    exit;
}
require_once '../../config/db.php';

$msg = '';
$error = '';
// 🔥 تنظیم تب پیش‌فرض روی ورود کالا (import)
$activeMainTab = 'import'; 
$activeSubTab = 'generator'; 

// ارتقای دیتابیس برای سیستم پیشرفته تخفیف‌های چندگانه
try {
    $pdo->exec("CREATE TABLE IF NOT EXISTS `plan_discounts` (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `plan_name` varchar(255) NOT NULL,
        `volume` int(11) NOT NULL,
        `discount_percent` int(11) NOT NULL DEFAULT 0,
        PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
} catch(PDOException $e) {}

// فراخوانی فایل پردازشگر عملیات بک‌اند (در صورت ارسال فرم، متغیر activeMainTab آپدیت می‌شود)
require_once '../inventory_process.php';

// دریافت لیست طرح‌ها
$plansList = $pdo->query("SELECT * FROM plans ORDER BY id ASC")->fetchAll();

// ==========================================
// 🚀 سیستم Lazy Load برای تب انبار پیشرفته
// این بخش باعث می‌شود جدول انبار فقط زمانی لود شود که کاربر روی تب آن کلیک کند
// ==========================================
if (isset($_GET['ajax_load_stock'])) {
    include 'widgets/stock.php';
    exit;
}

require_once '../../includes/header.php';
?>

<link rel="stylesheet" type="text/css" href="/vpnet-panel/assets/css/datatables.min.css">
<style>
    /* تنظیمات عمومی برای زیبایی اسکرول‌ها */
    .custom-scrollbar::-webkit-scrollbar { width: 6px; height: 6px; }
    .custom-scrollbar::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 10px; }
    html.dark .custom-scrollbar::-webkit-scrollbar-thumb { background: #475569; }
    .sub-watcher-alert { animation: pulseWarning 2s infinite; }
    @keyframes pulseWarning { 0% { box-shadow: 0 0 0 0px rgba(225, 29, 72, 0.4); } 100% { box-shadow: 0 0 0 15px rgba(225, 29, 72, 0); } }
    
    .tiny-scrollbar::-webkit-scrollbar { width: 4px; }
    .tiny-scrollbar::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
    html.dark .tiny-scrollbar::-webkit-scrollbar-thumb { background: #475569; }
</style>

<?php if($msg): ?><div class="bg-green-100 dark:bg-emerald-900/30 border border-green-400 dark:border-emerald-800 text-green-700 dark:text-emerald-400 px-4 py-3 rounded-xl mb-6 font-bold shadow-sm">✅ <?php echo $msg; ?></div><?php endif; ?>
<?php if(isset($error) && $error): ?><div class="bg-red-100 dark:bg-rose-900/30 border border-red-400 dark:border-rose-800 text-red-700 dark:text-rose-400 px-4 py-3 rounded-xl mb-6 font-bold shadow-sm">❌ <?php echo $error; ?></div><?php endif; ?>

<div class="flex gap-2 mb-6 border-b border-gray-200 dark:border-slate-700 pb-2 overflow-x-auto text-sm">
    <button onclick="switchMainTab('import')" id="btn-tab-import" class="px-6 py-3 rounded-t-xl font-bold transition whitespace-nowrap <?php echo $activeMainTab === 'import' ? 'bg-blue-600 text-white' : 'bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-gray-400'; ?>">۱. ورود کالا</button>
    <button onclick="switchMainTab('plans')" id="btn-tab-plans" class="px-6 py-3 rounded-t-xl font-bold transition whitespace-nowrap <?php echo $activeMainTab === 'plans' ? 'bg-blue-600 text-white' : 'bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-gray-400'; ?>">۲. تعریف طرح</button>
    <button onclick="switchMainTab('inventory')" id="btn-tab-inventory" class="px-6 py-3 rounded-t-xl font-bold transition whitespace-nowrap <?php echo $activeMainTab === 'inventory' ? 'bg-blue-600 text-white' : 'bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-gray-400'; ?>">۳. مدیریت پیشرفته انبار</button>
</div>

<div id="tab-import" class="<?php echo $activeMainTab === 'import' ? 'block relative' : 'hidden'; ?>">
    <?php include 'widgets/import.php'; ?>
</div>

<div id="tab-plans" class="<?php echo $activeMainTab === 'plans' ? 'block relative' : 'hidden'; ?>">
    <?php include 'widgets/plans.php'; ?>
</div>

<div id="tab-inventory" class="<?php echo $activeMainTab === 'inventory' ? 'block relative' : 'hidden relative'; ?>">
    <div id="inventory-loader" class="text-center py-16 hidden">
        <div class="animate-spin w-12 h-12 border-4 border-blue-600 border-t-transparent rounded-full mx-auto mb-4"></div>
        <p class="text-gray-500 dark:text-gray-400 font-bold text-sm">در حال دریافت و پردازش اطلاعات انبار...</p>
    </div>
    
    <div id="inventory-content">
        <?php 
        // 💡 فقط در صورتی که بعد از ذخیره یا حذف مستقیماً به تب انبار هدایت شویم، بلافاصله لود می‌شود.
        // در غیر این صورت خالی می‌ماند تا منابع سرور هدر نرود و بعداً با کلیک (AJAX) لود شود.
        if ($activeMainTab === 'inventory') {
            include 'widgets/stock.php';
        }
        ?>
    </div>
</div>

<script src="/vpnet-panel/assets/js/jquery-3.7.0.min.js"></script>
<script src="/vpnet-panel/assets/js/jquery.dataTables.min.js"></script>
<script>
    // بررسی اینکه آیا اطلاعات انبار قبلاً لود شده است یا خیر
    let isStockLoaded = <?php echo $activeMainTab === 'inventory' ? 'true' : 'false'; ?>;

    function switchMainTab(tab) {
        // مخفی کردن تمامی تب‌ها و تغییر رنگ دکمه‌ها
        ['plans', 'import', 'inventory'].forEach(t => {
            document.getElementById('tab-' + t).classList.replace('block', 'hidden');
            if(!document.getElementById('tab-' + t).classList.contains('hidden')) {
                document.getElementById('tab-' + t).classList.add('hidden');
            }
            document.getElementById('btn-tab-' + t).className = "px-6 py-3 rounded-t-xl font-bold bg-gray-100 dark:bg-slate-800 text-gray-600 dark:text-gray-400 transition whitespace-nowrap";
        });
        
        // نمایش تب انتخاب شده و تغییر رنگ دکمه به آبی (Active)
        document.getElementById('tab-' + tab).classList.remove('hidden');
        document.getElementById('tab-' + tab).classList.add('block');
        document.getElementById('btn-tab-' + tab).className = "px-6 py-3 rounded-t-xl font-bold bg-blue-600 text-white transition whitespace-nowrap";

        // 🚀 اجرای مکانیزم Lazy Load در صورت کلیک روی تب انبار
        if (tab === 'inventory' && !isStockLoaded) {
            $('#inventory-loader').removeClass('hidden'); // نمایش لودینگ
            
            $.ajax({
                url: 'inventory.php?ajax_load_stock=1',
                type: 'GET',
                success: function(html) {
                    $('#inventory-loader').addClass('hidden'); // مخفی کردن لودینگ
                    $('#inventory-content').html(html); // تزریق کدهای جدول انبار به صفحه
                    isStockLoaded = true; // جلوگیری از لود مجدد در کلیک‌های بعدی
                },
                error: function() {
                    $('#inventory-loader').html('<span class="text-rose-500 dark:text-rose-400 font-bold">❌ خطا در دریافت اطلاعات انبار. لطفا صفحه را رفرش کنید.</span>');
                }
            });
        }
    }
</script>

<?php require_once '../../includes/footer.php'; ?>