<?php
// تست صفحه representatives.php
error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once 'config.php';

echo "<h2>تست صفحه representatives.php</h2>";

// بررسی اتصال دیتابیس
try {
    echo "<p>✓ اتصال به دیتابیس موفق بود</p>";
    
    // بررسی وجود جدول representatives
    $check = $pdo->query("SHOW TABLES LIKE 'representatives'");
    if ($check->rowCount() > 0) {
        echo "<p>✓ جدول representatives وجود دارد</p>";
    } else {
        echo "<p>✗ جدول representatives وجود ندارد</p>";
        exit;
    }
    
    // بررسی وجود فیلدهای مورد نیاز
    $columns = $pdo->query("SHOW COLUMNS FROM representatives")->fetchAll(PDO::FETCH_COLUMN);
    $required_fields = ['id', 'username', 'password', 'panel_id', 'traffic_limit', 'expiry_date', 'last_activity', 'status'];
    foreach ($required_fields as $field) {
        if (in_array($field, $columns)) {
            echo "<p>✓ فیلد $field وجود دارد</p>";
        } else {
            echo "<p>✗ فیلد $field وجود ندارد</p>";
        }
    }
    
    // بررسی وجود جدول panels
    $check = $pdo->query("SHOW TABLES LIKE 'panels'");
    if ($check->rowCount() > 0) {
        echo "<p>✓ جدول panels وجود دارد</p>";
        
        // بررسی فیلدهای proxy
        $panel_columns = $pdo->query("SHOW COLUMNS FROM panels")->fetchAll(PDO::FETCH_COLUMN);
        $proxy_fields = ['proxy_type', 'proxy_host', 'proxy_port', 'proxy_username', 'proxy_password', 'use_proxy'];
        foreach ($proxy_fields as $field) {
            if (in_array($field, $panel_columns)) {
                echo "<p>✓ فیلد panels.$field وجود دارد</p>";
            } else {
                echo "<p>⚠ فیلد panels.$field وجود ندارد (اختیاری)</p>";
            }
        }
    } else {
        echo "<p>✗ جدول panels وجود ندارد</p>";
    }
    
    // تست query اصلی
    echo "<h3>تست Query اصلی:</h3>";
    try {
        $test_query = "
            SELECT r.*, 
                   p.name as panel_name,
                   (SELECT COUNT(*) FROM reseller_users WHERE representative_id = r.id) as total_users,
                   COALESCE((SELECT SUM(total_traffic) FROM reseller_users WHERE representative_id = r.id), 0) as total_user_traffic,
                   CASE 
                       WHEN r.last_activity IS NULL THEN 'offline'
                       WHEN TIMESTAMPDIFF(MINUTE, r.last_activity, NOW()) <= 5 THEN 'online'
                       ELSE 'offline'
                   END as online_status,
                   CASE 
                       WHEN r.expiry_date IS NULL THEN NULL
                       WHEN r.expiry_date < NOW() THEN TIMESTAMPDIFF(DAY, r.expiry_date, NOW())
                       ELSE TIMESTAMPDIFF(DAY, NOW(), r.expiry_date)
                   END as days_until_expiry
            FROM representatives r 
            JOIN panels p ON r.panel_id = p.id 
            ORDER BY r.created_at DESC
            LIMIT 5
        ";
        
        $result = $pdo->query($test_query);
        $rows = $result->fetchAll();
        echo "<p>✓ Query اجرا شد. تعداد ردیف‌ها: " . count($rows) . "</p>";
        
        if (count($rows) > 0) {
            echo "<h4>نمونه داده:</h4>";
            echo "<pre>";
            print_r($rows[0]);
            echo "</pre>";
            
            // تست json_encode
            echo "<h4>تست json_encode:</h4>";
            try {
                $json = json_encode($rows[0], JSON_UNESCAPED_UNICODE | JSON_HEX_QUOT | JSON_HEX_APOS);
                if ($json !== false) {
                    echo "<p>✓ json_encode موفق بود</p>";
                    echo "<pre>" . htmlspecialchars(substr($json, 0, 200)) . "...</pre>";
                } else {
                    echo "<p>✗ json_encode خطا داد: " . json_last_error_msg() . "</p>";
                }
            } catch (Exception $e) {
                echo "<p>✗ خطا در json_encode: " . $e->getMessage() . "</p>";
            }
        }
        
    } catch (Exception $e) {
        echo "<p>✗ خطا در اجرای Query: " . $e->getMessage() . "</p>";
        echo "<pre>" . $e->getTraceAsString() . "</pre>";
    }
    
} catch (Exception $e) {
    echo "<p>✗ خطا: " . $e->getMessage() . "</p>";
    echo "<pre>" . $e->getTraceAsString() . "</pre>";
}
