<?php
/**
 * test_email_advanced.php - اختبار متقدم للبريد الإلكتروني مع التصحيح
 */

// تحديد مسار ملف الأخطاء المخصص
$custom_log = __DIR__ . '/logs/email_debug.log';
if (!file_exists(__DIR__ . '/logs')) {
    mkdir(__DIR__ . '/logs', 0777, true);
}

// تسجيل الأخطاء في ملف مخصص
ini_set('error_log', $custom_log);
ini_set('log_errors', 1);
ini_set('display_errors', 1);
error_reporting(E_ALL);

require_once 'includes/email_service.php';

echo "<!DOCTYPE html>
<html dir='rtl' lang='ar'>
<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>اختبار البريد المتقدم</title>
    <style>
        body { font-family: 'Tajawal', Arial, sans-serif; background: #f5f5f5; padding: 20px; }
        .container { max-width: 900px; margin: 0 auto; background: white; border-radius: 15px; padding: 25px; box-shadow: 0 5px 15px rgba(0,0,0,0.1); }
        h1 { color: #F57C00; border-bottom: 2px solid #F57C00; padding-bottom: 10px; }
        .success { background: #d4edda; color: #155724; padding: 15px; border-radius: 8px; margin: 10px 0; border-right: 5px solid #28a745; }
        .error { background: #f8d7da; color: #721c24; padding: 15px; border-radius: 8px; margin: 10px 0; border-right: 5px solid #dc3545; }
        .info { background: #d1ecf1; color: #0c5460; padding: 15px; border-radius: 8px; margin: 10px 0; border-right: 5px solid #17a2b8; }
        .warning { background: #fff3cd; color: #856404; padding: 15px; border-radius: 8px; margin: 10px 0; border-right: 5px solid #ffc107; }
        .debug { background: #e2e3e5; color: #383d41; padding: 15px; border-radius: 5px; font-family: monospace; margin: 5px 0; }
        .step { margin: 25px 0; padding: 20px; border: 2px solid #e9ecef; border-radius: 10px; }
        .step h3 { margin-top: 0; color: #495057; display: flex; align-items: center; gap: 10px; }
        .step h3:before { content: '🔍'; }
        .button { background: #F57C00; color: white; border: none; padding: 12px 25px; border-radius: 8px; cursor: pointer; font-size: 16px; font-weight: bold; transition: all 0.3s; }
        .button:hover { background: #E65100; transform: translateY(-2px); box-shadow: 0 5px 15px rgba(245,124,0,0.3); }
        input, select { padding: 10px; border: 2px solid #dee2e6; border-radius: 8px; width: 100%; margin: 5px 0; font-family: 'Tajawal', sans-serif; }
        input:focus, select:focus { outline: none; border-color: #F57C00; }
        .badge { display: inline-block; padding: 3px 10px; border-radius: 20px; font-size: 12px; font-weight: bold; }
        .badge.success { background: #28a745; color: white; }
        .badge.error { background: #dc3545; color: white; }
        .badge.warning { background: #ffc107; color: #333; }
        table { width: 100%; border-collapse: collapse; margin: 10px 0; }
        th, td { padding: 10px; text-align: right; border-bottom: 1px solid #dee2e6; }
        th { background: #f8f9fa; font-weight: bold; }
    </style>
</head>
<body>
    <div class='container'>
        <h1>📧 اختبار البريد الإلكتروني المتقدم</h1>";

// اختبار اتصال SMTP
echo "<div class='step'>
        <h3>الخطوة 1: اختبار اتصال SMTP</h3>";

$host = 'smtp.gmail.com';
$ports = [587, 465, 25];
$all_ports_open = true;

foreach ($ports as $port) {
    $connection = @fsockopen($host, $port, $errno, $errstr, 5);
    if ($connection) {
        echo "<div class='success'>✅ يمكن الاتصال بـ $host على المنفذ $port</div>";
        fclose($connection);
    } else {
        echo "<div class='error'>❌ لا يمكن الاتصال بـ $host على المنفذ $port: $errstr</div>";
        $all_ports_open = false;
    }
}

if ($all_ports_open) {
    echo "<div class='success badge'>جميع المنافذ مفتوحة - ممتاز!</div>";
}

echo "</div>";

// التحقق من إعدادات PHP
echo "<div class='step'>
        <h3>الخطوة 2: التحقق من إعدادات PHP</h3>
        <table>
            <tr><th>الإعداد</th><th>الحالة</th></tr>";

$checks = [
    'OpenSSL' => extension_loaded('openssl'),
    'cURL' => extension_loaded('curl'),
    'allow_url_fopen' => ini_get('allow_url_fopen'),
    'SMTP' => ini_get('SMTP'),
    'smtp_port' => ini_get('smtp_port'),
    'sendmail_from' => ini_get('sendmail_from'),
    'sendmail_path' => ini_get('sendmail_path')
];

foreach ($checks as $name => $value) {
    echo "<tr>";
    echo "<td>$name</td>";
    if (is_bool($value)) {
        $status = $value ? '✅ مفعل' : '❌ غير مفعل';
        $class = $value ? 'success' : 'error';
    } else {
        $status = $value ? "✅ $value" : '⚠️ غير محدد';
        $class = $value ? 'success' : 'warning';
    }
    echo "<td><span class='badge $class'>$status</span></td>";
    echo "</tr>";
}

echo "</table></div>";

// التحقق من وجود ملفات PHPMailer
echo "<div class='step'>
        <h3>الخطوة 3: التحقق من ملفات PHPMailer</h3>";

$files = [
    __DIR__ . '/includes/PHPMailer/Exception.php',
    __DIR__ . '/includes/PHPMailer/PHPMailer.php',
    __DIR__ . '/includes/PHPMailer/SMTP.php'
];

$all_files_exist = true;
foreach ($files as $file) {
    if (file_exists($file)) {
        echo "<div class='success'>✅ " . basename($file) . " - موجود</div>";
    } else {
        echo "<div class='error'>❌ " . basename($file) . " - مفقود</div>";
        $all_files_exist = false;
    }
}

if (!$all_files_exist) {
    echo "<div class='error'>⚠️ ملفات PHPMailer غير مكتملة. تأكد من رفع جميع الملفات.</div>";
}

echo "</div>";

// معلومات البريد الإلكتروني
echo "<div class='step'>
        <h3>الخطوة 4: معلومات البريد الإلكتروني</h3>
        <div class='info'>
            <p><strong>البريد المستخدم:</strong> maxborger.app@gmail.com</p>
            <p><strong>كلمة المرور:</strong> bzza vaxj trtu gnam (هذا رمز تطبيق وليس كلمة مرور)</p>
            <p><strong>حالة رمز التطبيق:</strong> ✅ صحيح</p>
        </div>
    </div>";

// نموذج الإرسال
echo "<div class='step'>
        <h3>الخطوة 5: إرسال بريد تجريبي</h3>";
        
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['test_email'])) {
    $to = $_POST['test_email'];
    $method = $_POST['method'] ?? 'phpmailer';
    $debug = isset($_POST['debug']);
    
    $otp = generateOTP();
    
    echo "<h4>📤 نتيجة الإرسال:</h4>";
    
    try {
        if ($method === 'phpmailer') {
            // استخدام PHPMailer
            $emailService = new EmailService($debug);
            
            // تسجيل محاولة الإرسال
            error_log("محاولة إرسال بريد إلى: $to باستخدام PHPMailer");
            
            $result = $emailService->sendOTP($to, 'مستخدم تجريبي', $otp, 'registration');
            
            if ($result) {
                echo "<div class='success'>
                        <strong>✅ تم إرسال البريد بنجاح!</strong><br>
                        <strong>رمز التحقق:</strong> $otp<br>
                        <strong>البريد المستلم:</strong> $to
                      </div>";
            } else {
                echo "<div class='error'>
                        <strong>❌ فشل إرسال البريد باستخدام PHPMailer</strong><br>
                        <strong>رمز التحقق:</strong> $otp (يمكنك استخدامه يدوياً)
                      </div>";
            }
        } else {
            // استخدام mail()
            $subject = "=?UTF-8?B?" . base64_encode('رمز التحقق - مطعم Max') . "?=";
            
            $message = "
            <html dir='rtl'>
            <body style='font-family: Arial; text-align: center;'>
                <h2 style='color: #F57C00;'>رمز التحقق الخاص بك</h2>
                <h1 style='font-size: 48px; color: #F57C00;'>$otp</h1>
                <p>هذا الرمز صالح لمدة 10 دقائق</p>
            </body>
            </html>";
            
            $headers = "MIME-Version: 1.0\r\n";
            $headers .= "Content-type: text/html; charset=UTF-8\r\n";
            $headers .= "From: مطعم Max <maxborger.app@gmail.com>\r\n";
            $headers .= "Reply-To: maxborger.app@gmail.com\r\n";
            
            $result = mail($to, $subject, $message, $headers);
            
            if ($result) {
                echo "<div class='success'>✅ تم إرسال البريد بنجاح باستخدام mail()!<br>رمز التحقق: $otp</div>";
            } else {
                echo "<div class='error'>❌ فشل إرسال البريد باستخدام mail()</div>";
            }
        }
        
        // عرض تفاصيل إضافية
        echo "<div class='debug'>
                <strong>تفاصيل الإرسال:</strong><br>
                - الوقت: " . date('Y-m-d H:i:s') . "<br>
                - الطريقة: $method<br>
                - وضع التصحيح: " . ($debug ? 'مفعل' : 'غير مفعل') . "
              </div>";
        
    } catch (Exception $e) {
        echo "<div class='error'>❌ خطأ: " . $e->getMessage() . "</div>";
        error_log("استثناء في الإرسال: " . $e->getMessage());
    }
}
?>

        <form method="POST">
            <div style="margin-bottom: 15px;">
                <label><strong>البريد الإلكتروني المستلم:</strong></label>
                <input type="email" name="test_email" value="<?= isset($_POST['test_email']) ? htmlspecialchars($_POST['test_email']) : 'roadcode534@gmail.com' ?>" required>
            </div>
            
            <div style="margin-bottom: 15px;">
                <label><strong>طريقة الإرسال:</strong></label>
                <select name="method">
                    <option value="phpmailer" <?= (isset($_POST['method']) && $_POST['method'] == 'phpmailer') ? 'selected' : '' ?>>PHPMailer (مستحسن)</option>
                    <option value="mail" <?= (isset($_POST['method']) && $_POST['method'] == 'mail') ? 'selected' : '' ?>>mail()</option>
                </select>
            </div>
            
            <div style="margin-bottom: 20px;">
                <label style="display: flex; align-items: center; gap: 10px;">
                    <input type="checkbox" name="debug" value="1" <?= isset($_POST['debug']) ? 'checked' : '' ?>>
                    <strong>تفعيل وضع التصحيح (سيظهر تفاصيل الاتصال)</strong>
                </label>
            </div>
            
            <button type="submit" class="button">📧 إرسال البريد التجريبي</button>
        </form>
    </div>

<?php
// عرض سجل الأخطاء المخصص
echo "<div class='step'>
        <h3>الخطوة 6: سجل الأخطاء المخصص</h3>";

if (file_exists($custom_log)) {
    $log_content = file_get_contents($custom_log);
    if (!empty($log_content)) {
        $lines = explode("\n", trim($log_content));
        $last_lines = array_slice($lines, -20);
        echo "<div class='debug'><pre>";
        foreach ($last_lines as $line) {
            if (!empty($line)) {
                $line = htmlspecialchars($line);
                if (strpos($line, 'success') !== false || strpos($line, '✅') !== false) {
                    echo "<span style='color: green;'>$line</span>\n";
                } elseif (strpos($line, 'error') !== false || strpos($line, '❌') !== false) {
                    echo "<span style='color: red;'>$line</span>\n";
                } else {
                    echo "$line\n";
                }
            }
        }
        echo "</pre></div>";
    } else {
        echo "<div class='info'>لا توجد أخطاء مسجلة بعد. قم بإرسال بريد أولاً.</div>";
    }
} else {
    echo "<div class='info'>لم يتم إنشاء ملف الأخطاء بعد.</div>";
}

echo "</div>";

// حلول مقترحة
echo "<div class='step'>
        <h3>🔧 حلول مقترحة لمشكلة عدم وصول البريد</h3>
        <table>
            <tr>
                <th>المشكلة المحتملة</th>
                <th>الحل</th>
            </tr>
            <tr>
                <td>Gmail يمنع تسجيل الدخول</td>
                <td>تأكد من تفعيل 'التحقق بخطوتين' واستخدام رمز تطبيق صحيح</td>
            </tr>
            <tr>
                <td>مشكلة في SSL/TLS</td>
                <td>جرب استخدام المنفذ 465 مع 'ssl' بدلاً من 587 مع 'tls'</td>
            </tr>
            <tr>
                <td>البريد يذهب إلى Spam</td>
                <td>تحقق من مجلد البريد المزعج (Spam) وأضف المرسل إلى جهات الاتصال</td>
            </tr>
            <tr>
                <td>تأخير في وصول البريد</td>
                <td>قد يستغرق وصول البريد عدة دقائق، انتظر قليلاً</td>
            </tr>
        </table>
    </div>";

echo "</div></body></html>";