<?php
/**
 * ابزار مدیریت دیتابیس Dima Shop
 * نسخه: 1.0.0
 * 
 * این صفحه برای ساخت دستی جدول‌ها در صورت عدم کارکرد خودکار استفاده می‌شود
 */
if (!defined('ABSPATH')) exit;

global $wpdb;
$message = '';
$message_type = '';

// ═══════════════════════════════════════════════════════════
// بررسی وضعیت جدول‌ها
// ═══════════════════════════════════════════════════════════
function dima_check_tables() {
    global $wpdb;
    
    $required_tables = array(
        'dima_orders',
        'dima_order_items',
        'dima_coupons',
        'dima_reviews',
        'dima_flash_sales',
        'dima_reward_points',
        'dima_security_logs'
    );
    
    $existing = $wpdb->get_col("SHOW TABLES");
    $status = array();
    
    foreach ($required_tables as $table) {
        $full_name = $wpdb->prefix . $table;
        $status[$table] = in_array($full_name, $existing);
    }
    
    return $status;
}

// ═══════════════════════════════════════════════════════════
// ساخت جدول‌ها
// ═══════════════════════════════════════════════════════════
if (isset($_POST['dima_create_tables']) && check_admin_referer('dima_db_tools_nonce')) {
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    
    $charset_collate = $wpdb->get_charset_collate();
    $tables_created = 0;
    $errors = array();
    
    // جدول سفارشات
    $sql = "CREATE TABLE {$wpdb->prefix}dima_orders (
        id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        user_id bigint(20) UNSIGNED DEFAULT 0,
        session_id varchar(64) DEFAULT NULL,
        total_amount decimal(12,2) NOT NULL DEFAULT 0.00,
        discount_amount decimal(12,2) NOT NULL DEFAULT 0.00,
        shipping_amount decimal(12,2) NOT NULL DEFAULT 0.00,
        tax_amount decimal(12,2) NOT NULL DEFAULT 0.00,
        final_amount decimal(12,2) NOT NULL DEFAULT 0.00,
        reward_points_earned int(11) DEFAULT 0,
        reward_points_used int(11) DEFAULT 0,
        status varchar(30) NOT NULL DEFAULT 'pending',
        payment_method varchar(50) NOT NULL,
        transaction_id varchar(255) DEFAULT NULL,
        ref_id varchar(100) DEFAULT NULL,
        coupon_code varchar(50) DEFAULT NULL,
        customer_data longtext NOT NULL,
        ip_address varchar(45) DEFAULT NULL,
        user_agent text DEFAULT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP,
        updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        PRIMARY KEY  (id),
        KEY user_id (user_id),
        KEY status (status),
        KEY created_at (created_at),
        KEY transaction_id (transaction_id)
    ) $charset_collate;";
    dbDelta($sql);
    
    // جدول آیتم‌های سفارش
    $sql = "CREATE TABLE {$wpdb->prefix}dima_order_items (
        id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        order_id bigint(20) UNSIGNED NOT NULL,
        product_id bigint(20) UNSIGNED NOT NULL,
        variation_id bigint(20) UNSIGNED DEFAULT 0,
        quantity int(11) UNSIGNED NOT NULL DEFAULT 1,
        price decimal(12,2) NOT NULL DEFAULT 0.00,
        PRIMARY KEY  (id),
        KEY order_id (order_id),
        KEY product_id (product_id)
    ) $charset_collate;";
    dbDelta($sql);
    
    // جدول کوپن‌ها
    $sql = "CREATE TABLE {$wpdb->prefix}dima_coupons (
        id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        code varchar(50) NOT NULL,
        type varchar(20) NOT NULL DEFAULT 'percent',
        value decimal(10,2) NOT NULL,
        min_amount decimal(12,2) DEFAULT 0.00,
        max_uses int(11) UNSIGNED DEFAULT 0,
        used_count int(11) UNSIGNED DEFAULT 0,
        expiry_date datetime DEFAULT NULL,
        status varchar(20) NOT NULL DEFAULT 'active',
        created_at datetime DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY  (id),
        UNIQUE KEY code (code),
        KEY status (status)
    ) $charset_collate;";
    dbDelta($sql);
    
    // جدول نظرات
    $sql = "CREATE TABLE {$wpdb->prefix}dima_reviews (
        id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        product_id bigint(20) UNSIGNED NOT NULL,
        user_id bigint(20) UNSIGNED DEFAULT 0,
        author_name varchar(100) NOT NULL,
        author_email varchar(100) DEFAULT NULL,
        rating tinyint(1) UNSIGNED NOT NULL DEFAULT 5,
        title varchar(200) DEFAULT NULL,
        content text,
        status varchar(20) NOT NULL DEFAULT 'pending',
        verified_purchase tinyint(1) DEFAULT 0,
        created_at datetime DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY  (id),
        KEY product_id (product_id),
        KEY user_id (user_id),
        KEY status (status)
    ) $charset_collate;";
    dbDelta($sql);
    
    // جدول شگفت‌انگیز
    $sql = "CREATE TABLE {$wpdb->prefix}dima_flash_sales (
        id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        product_id bigint(20) UNSIGNED NOT NULL,
        sale_price decimal(12,2) NOT NULL,
        start_time datetime NOT NULL,
        end_time datetime NOT NULL,
        stock_limit int(11) UNSIGNED DEFAULT 0,
        sold_count int(11) UNSIGNED DEFAULT 0,
        status varchar(20) NOT NULL DEFAULT 'active',
        created_at datetime DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY  (id),
        KEY product_id (product_id),
        KEY status (status)
    ) $charset_collate;";
    dbDelta($sql);
    
    // جدول امتیازات
    $sql = "CREATE TABLE {$wpdb->prefix}dima_reward_points (
        id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        user_id bigint(20) UNSIGNED NOT NULL,
        points int(11) NOT NULL,
        type varchar(30) NOT NULL,
        reference_id bigint(20) UNSIGNED DEFAULT NULL,
        description varchar(255) DEFAULT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY  (id),
        KEY user_id (user_id),
        KEY type (type)
    ) $charset_collate;";
    dbDelta($sql);
    
    // جدول لاگ‌های امنیتی
    $sql = "CREATE TABLE {$wpdb->prefix}dima_security_logs (
        id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
        event_type varchar(100) NOT NULL,
        severity varchar(20) NOT NULL DEFAULT 'warning',
        ip_address varchar(45) NOT NULL,
        user_id bigint(20) UNSIGNED DEFAULT 0,
        user_agent text DEFAULT NULL,
        details longtext,
        created_at datetime DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY  (id),
        KEY event_type (event_type),
        KEY ip_address (ip_address),
        KEY severity (severity),
        KEY created_at (created_at)
    ) $charset_collate;";
    dbDelta($sql);
    
    // بررسی نتیجه
    $status = dima_check_tables();
    $all_created = true;
    foreach ($status as $exists) {
        if (!$exists) {
            $all_created = false;
            break;
        }
    }
    
    if ($all_created) {
        $message = '✅ تمام جدول‌ها با موفقیت ساخته شدند!';
        $message_type = 'success';
    } else {
        $message = '⚠️ برخی جدول‌ها ساخته نشدند. لطفاً خطاهای PHP را بررسی کنید.';
        $message_type = 'warning';
    }
}

// ═══════════════════════════════════════════════════════════
// حذف جدول‌ها (با احتیاط!)
// ═══════════════════════════════════════════════════════════
if (isset($_POST['dima_drop_tables']) && check_admin_referer('dima_db_tools_nonce')) {
    if (isset($_POST['confirm_drop']) && $_POST['confirm_drop'] === 'yes') {
        $tables = array(
            'dima_orders',
            'dima_order_items',
            'dima_coupons',
            'dima_reviews',
            'dima_flash_sales',
            'dima_reward_points',
            'dima_security_logs'
        );
        
        foreach ($tables as $table) {
            $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}{$table}");
        }
        
        $message = '🗑️ جدول‌ها حذف شدند. (داده‌ها قابل بازگشت نیستند!)';
        $message_type = 'warning';
    }
}

// ═══════════════════════════════════════════════════════════
// ترمیم جداول
// ═══════════════════════════════════════════════════════════
if (isset($_POST['dima_repair_tables']) && check_admin_referer('dima_db_tools_nonce')) {
    $tables = array(
        'dima_orders',
        'dima_order_items',
        'dima_coupons',
        'dima_reviews',
        'dima_flash_sales',
        'dima_reward_points',
        'dima_security_logs'
    );
    
    $repaired = 0;
    foreach ($tables as $table) {
        $result = $wpdb->query("REPAIR TABLE {$wpdb->prefix}{$table}");
        if ($result !== false) $repaired++;
    }
    
    $message = "🔧 {$repaired} جدول ترمیم شدند.";
    $message_type = 'success';
}

// بهینه‌سازی جداول
if (isset($_POST['dima_optimize_tables']) && check_admin_referer('dima_db_tools_nonce')) {
    $tables = array(
        'dima_orders',
        'dima_order_items',
        'dima_coupons',
        'dima_reviews',
        'dima_flash_sales',
        'dima_reward_points',
        'dima_security_logs'
    );
    
    $optimized = 0;
    foreach ($tables as $table) {
        $result = $wpdb->query("OPTIMIZE TABLE {$wpdb->prefix}{$table}");
        if ($result !== false) $optimized++;
    }
    
    $message = "⚡ {$optimized} جدول بهینه‌سازی شدند.";
    $message_type = 'success';
}

// دریافت وضعیت فعلی
$table_status = dima_check_tables();
$tables_count = count(array_filter($table_status));
$total_tables = count($table_status);
$all_ok = ($tables_count === $total_tables);
?>

<div class="wrap dima-db-tools">
    <h1>🗄️ ابزارهای دیتابیس Dima Shop</h1>
    
    <?php if ($message): ?>
        <div class="notice notice-<?php echo $message_type; ?> is-dismissible">
            <p><?php echo $message; ?></p>
        </div>
    <?php endif; ?>
    
    <!-- وضعیت جدول‌ها -->
    <div class="dima-card status-card <?php echo $all_ok ? 'status-ok' : 'status-error'; ?>">
        <h2>📊 وضعیت جدول‌ها</h2>
        <div class="status-summary">
            <div class="status-number">
                <span class="big-number"><?php echo $tables_count; ?></span>
                <span class="total-number">/ <?php echo $total_tables; ?></span>
            </div>
            <div class="status-text">
                <?php if ($all_ok): ?>
                    <span class="status-badge ok">✅ همه جدول‌ها موجود هستند</span>
                <?php else: ?>
                    <span class="status-badge error">❌ برخی جدول‌ها وجود ندارند</span>
                <?php endif; ?>
            </div>
        </div>
        
        <div class="tables-list">
            <?php foreach ($table_status as $table => $exists): ?>
            <div class="table-item <?php echo $exists ? 'exists' : 'missing'; ?>">
                <span class="table-icon"><?php echo $exists ? '✅' : ''; ?></span>
                <span class="table-name"><?php echo $wpdb->prefix . $table; ?></span>
                <?php if ($exists): 
                    $count = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}{$table}");
                ?>
                    <span class="table-rows"><?php echo intval($count); ?> ردیف</span>
                <?php else: ?>
                    <span class="table-rows missing-text">وجود ندارد</span>
                <?php endif; ?>
            </div>
            <?php endforeach; ?>
        </div>
    </div>
    
    <!-- ابزارها -->
    <div class="dima-grid">
        
        <!-- ساخت جدول‌ها -->
        <div class="dima-card action-card">
            <div class="card-icon"></div>
            <h3>ساخت جدول‌ها</h3>
            <p>جدول‌های مورد نیاز پلاگین را می‌سازد. اگر جدولی وجود داشته باشد، فقط ساختار آن را بروزرسانی می‌کند.</p>
            <form method="post">
                <?php wp_nonce_field('dima_db_tools_nonce'); ?>
                <button type="submit" name="dima_create_tables" class="button button-primary button-hero" 
                        onclick="return confirm('آیا از ساخت جدول‌ها مطمئن هستید؟');">
                    🔨 ساخت / بروزرسانی جدول‌ها
                </button>
            </form>
        </div>
        
        <!-- ترمیم -->
        <div class="dima-card action-card">
            <div class="card-icon">🔧</div>
            <h3>ترمیم جداول</h3>
            <p>جداول آسیب‌دیده را ترمیم می‌کند. این عمل برای جداول MyISAM کاربرد دارد.</p>
            <form method="post">
                <?php wp_nonce_field('dima_db_tools_nonce'); ?>
                <button type="submit" name="dima_repair_tables" class="button button-primary">
                     ترمیم جداول
                </button>
            </form>
        </div>
        
        <!-- بهینه‌سازی -->
        <div class="dima-card action-card">
            <div class="card-icon">⚡</div>
            <h3>بهینه‌سازی</h3>
            <p>فضای استفاده نشده جداول را آزاد و عملکرد را بهبود می‌بخشد.</p>
            <form method="post">
                <?php wp_nonce_field('dima_db_tools_nonce'); ?>
                <button type="submit" name="dima_optimize_tables" class="button button-primary">
                    ⚡ بهینه‌سازی جداول
                </button>
            </form>
        </div>
        
        <!-- حذف (خطرناک) -->
        <div class="dima-card action-card danger-card">
            <div class="card-icon">️</div>
            <h3>حذف جدول‌ها</h3>
            <p style="color:#ef4444; font-weight:bold;">⚠️ هشدار: این عمل غیرقابل بازگشت است و تمام داده‌ها حذف می‌شوند!</p>
            <form method="post">
                <?php wp_nonce_field('dima_db_tools_nonce'); ?>
                <input type="hidden" name="confirm_drop" value="yes">
                <button type="submit" name="dima_drop_tables" class="button button-link-delete" 
                        onclick="return confirm('⚠️ آیا مطمئن هستید؟ تمام داده‌های فروشگاه حذف خواهند شد!');">
                    🗑️ حذف تمام جدول‌ها
                </button>
            </form>
        </div>
        
    </div>
    
    <!-- راهنمای عیب‌یابی -->
    <div class="dima-card troubleshooting-card">
        <h2>🔍 راهنمای عیب‌یابی</h2>
        
        <div class="troubleshooting-steps">
            <div class="step">
                <div class="step-number">1</div>
                <div class="step-content">
                    <h4>بررسی فعال بودن پلاگین</h4>
                    <p>مطمئن شوید پلاگین Dima Shop در بخش <strong>افزونه‌ها</strong> فعال است.</p>
                </div>
            </div>
            
            <div class="step">
                <div class="step-number">2</div>
                <div class="step-content">
                    <h4>بررسی مسیر فایل</h4>
                    <p>فایل اصلی باید در این مسیر باشد:<br>
                    <code>wp-content/plugins/dima-shop/dima-shop.php</code></p>
                </div>
            </div>
            
            <div class="step">
                <div class="step-number">3</div>
                <div class="step-content">
                    <h4>فعال‌سازی مجدد</h4>
                    <p>پلاگین را غیرفعال و دوباره فعال کنید تا hook فعال‌سازی اجرا شود.</p>
                </div>
            </div>
            
            <div class="step">
                <div class="step-number">4</div>
                <div class="step-content">
                    <h4>بررسی خطاها</h4>
                    <p>فایل <code>wp-content/debug.log</code> را بررسی کنید.</p>
                    <p>برای فعال‌سازی debug، این خطوط را به <code>wp-config.php</code> اضافه کنید:</p>
                    <pre>define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);</pre>
                </div>
            </div>
            
            <div class="step">
                <div class="step-number">5</div>
                <div class="step-content">
                    <h4>بررسی دسترسی دیتابیس</h4>
                    <p>مطمئن شوید کاربر MySQL دسترسی CREATE TABLE دارد.</p>
                </div>
            </div>
        </div>
    </div>
    
    <!-- اطلاعات فنی -->
    <div class="dima-card technical-card">
        <h2>️ اطلاعات فنی</h2>
        <table class="technical-table">
            <tr>
                <th>نسخه پلاگین:</th>
                <td><?php echo defined('DIMA_SHOP_VERSION') ? DIMA_SHOP_VERSION : 'نامشخص'; ?></td>
            </tr>
            <tr>
                <th>پیشوند جداول:</th>
                <td><code><?php echo $wpdb->prefix; ?></code></td>
            </tr>
            <tr>
                <th>نسخه MySQL:</th>
                <td><?php echo $wpdb->db_version(); ?></td>
            </tr>
            <tr>
                <th>نوع دیتابیس:</th>
                <td><?php echo $wpdb->use_mysqli ? 'MySQLi' : 'MySQL'; ?></td>
            </tr>
            <tr>
                <th>کاربر دیتابیس:</th>
                <td><code><?php echo DB_USER; ?></code></td>
            </tr>
            <tr>
                <th>نام دیتابیس:</th>
                <td><code><?php echo DB_NAME; ?></code></td>
            </tr>
        </table>
    </div>
    
</div>

<style>
.dima-db-tools { max-width: 1200px; }

.dima-card {
    background: white;
    border-radius: 16px;
    padding: 24px;
    margin-bottom: 24px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
    border: 1px solid #e5e7eb;
}

.dima-card h2 {
    margin: 0 0 20px 0;
    padding-bottom: 12px;
    border-bottom: 2px solid #f3f4f6;
    font-size: 20px;
    color: #1f2937;
}

.dima-card h3 {
    margin: 0 0 12px 0;
    font-size: 18px;
    color: #1f2937;
}

.dima-card p {
    color: #6b7280;
    line-height: 1.6;
}

/* Status Card */
.status-card.status-ok { border-right: 4px solid #10b981; }
.status-card.status-error { border-right: 4px solid #ef4444; }

.status-summary {
    display: flex;
    align-items: center;
    gap: 30px;
    margin-bottom: 24px;
    padding: 20px;
    background: #f9fafb;
    border-radius: 12px;
}

.status-number {
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.big-number {
    font-size: 48px;
    font-weight: 900;
    color: #1f2937;
    line-height: 1;
}

.total-number {
    font-size: 20px;
    color: #6b7280;
}

.status-badge {
    padding: 8px 16px;
    border-radius: 20px;
    font-weight: 700;
    font-size: 14px;
}

.status-badge.ok {
    background: #d1fae5;
    color: #065f46;
}

.status-badge.error {
    background: #fee2e2;
    color: #991b1b;
}

.tables-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 12px;
}

.table-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: #f9fafb;
    border-radius: 10px;
    border: 1px solid #e5e7eb;
}

.table-item.exists {
    background: #f0fdf4;
    border-color: #bbf7d0;
}

.table-item.missing {
    background: #fef2f2;
    border-color: #fecaca;
}

.table-icon { font-size: 18px; }

.table-name {
    flex: 1;
    font-family: monospace;
    font-size: 13px;
    color: #374151;
}

.table-rows {
    font-size: 12px;
    color: #6b7280;
    font-weight: 600;
}

.missing-text {
    color: #ef4444;
}

/* Grid */
.dima-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
    margin-bottom: 24px;
}

.action-card {
    text-align: center;
}

.card-icon {
    font-size: 48px;
    margin-bottom: 15px;
}

.danger-card {
    border: 2px solid #fecaca;
}

/* Troubleshooting */
.troubleshooting-steps {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.step {
    display: flex;
    gap: 16px;
    padding: 16px;
    background: #f9fafb;
    border-radius: 12px;
}

.step-number {
    width: 36px;
    height: 36px;
    background: linear-gradient(135deg, #6366f1, #a855f7);
    color: white;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 800;
    flex-shrink: 0;
}

.step-content h4 {
    margin: 0 0 8px 0;
    color: #1f2937;
}

.step-content p {
    margin: 0 0 8px 0;
}

.step-content pre {
    background: #1f2937;
    color: #10b981;
    padding: 12px;
    border-radius: 8px;
    overflow-x: auto;
    font-size: 13px;
    margin: 8px 0 0 0;
}

/* Technical */
.technical-table {
    width: 100%;
    border-collapse: collapse;
}

.technical-table th,
.technical-table td {
    padding: 12px;
    text-align: right;
    border-bottom: 1px solid #f3f4f6;
}

.technical-table th {
    background: #f9fafb;
    font-weight: 600;
    color: #374151;
    width: 200px;
}

.technical-table td code {
    background: #f3f4f6;
    padding: 4px 8px;
    border-radius: 4px;
    font-family: monospace;
    font-size: 13px;
    color: #6366f1;
}
</style>