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

require_once __DIR__ . '/PHPMailer/Exception.php';
require_once __DIR__ . '/PHPMailer/PHPMailer.php';
require_once __DIR__ . '/PHPMailer/SMTP.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

class EmailService {
    private $mail;
    public $debug = false;
    
    public function __construct() {
        $this->mail = new PHPMailer(true);
        $this->setupSMTP();
    }
    
    private function setupSMTP() {
        try {
            $this->mail->isSMTP();
            
            // إعدادات Gmail
            $this->mail->Host = 'smtp.gmail.com';
            $this->mail->SMTPAuth = true;
            $this->mail->Username = 'maxborger.app@gmail.com';
            $this->mail->Password = 'bzza vaxj trtu gnam';
            
            // جرب TLS أولاً على المنفذ 587
            $this->mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
            $this->mail->Port = 587;
            
            // إعدادات إضافية
            $this->mail->CharSet = 'UTF-8';
            $this->mail->Encoding = 'base64';
            $this->mail->setFrom('maxborger.app@gmail.com', 'مطعم Max');
            
            // مهلة أطول
            $this->mail->Timeout = 30;
            
            // خيارات SSL للتغلب على مشاكل التحقق
            $this->mail->SMTPOptions = array(
                'ssl' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                    'allow_self_signed' => true
                )
            );
            
            // تفعيل التصحيح إذا كان مطلوباً
            if ($this->debug) {
                $this->mail->SMTPDebug = SMTP::DEBUG_SERVER;
                $this->mail->Debugoutput = function($str, $level) {
                    error_log("PHPMailer Debug: $str");
                    echo "<!-- PHPMailer Debug: $str -->\n";
                };
            }
            
        } catch (Exception $e) {
            error_log("فشل إعداد البريد: " . $e->getMessage());
            throw new Exception("فشل إعداد خدمة البريد: " . $e->getMessage());
        }
    }
    
    public function sendOTP($to, $name, $otp, $purpose = 'registration') {
        try {
            // تنظيف العناوين القديمة
            $this->mail->clearAddresses();
            $this->mail->addAddress($to, $name);
            
            // إضافة رد للمرسل
            $this->mail->addReplyTo('maxborger.app@gmail.com', 'مطعم Max');
            
            // عنوان البريد
            $subject = ($purpose === 'registration') 
                ? 'تفعيل حسابك في مطعم Max' 
                : 'إعادة تعيين كلمة المرور - مطعم Max';
            
            $this->mail->Subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";
            
            // محتوى HTML
            $this->mail->isHTML(true);
            $this->mail->Body = $this->getEmailTemplate($otp, $name, $purpose);
            $this->mail->AltBody = "رمز التحقق الخاص بك هو: $otp\n\nهذا الرمز صالح لمدة 10 دقائق.";
            
            // محاولة الإرسال
            $result = $this->mail->send();
            
            if ($result) {
                error_log("✅ تم إرسال البريد إلى $to بنجاح");
                return true;
            }
            
            return false;
            
        } catch (Exception $e) {
            error_log("❌ فشل إرسال البريد إلى $to: " . $e->getMessage());
            error_log("تفاصيل إضافية: " . $this->mail->ErrorInfo);
            
            // محاولة ثانية مع SSL
            if ($this->mail->Port == 587) {
                try {
                    error_log("محاولة ثانية مع SSL على المنفذ 465...");
                    $this->mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
                    $this->mail->Port = 465;
                    return $this->mail->send();
                } catch (Exception $e2) {
                    error_log("❌ فشلت المحاولة الثانية: " . $e2->getMessage());
                }
            }
            
            return false;
        }
    }
    
    private function getEmailTemplate($otp, $name, $purpose) {
        $message = ($purpose === 'registration') 
            ? 'لتفعيل حسابك في مطعم Max' 
            : 'لإعادة تعيين كلمة المرور الخاصة بك';
        
        $year = date('Y');
        
        return <<<HTML
<!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: #f8f9fa; padding: 20px; }
        .container { max-width: 600px; margin: 0 auto; background: white; border-radius: 20px; overflow: hidden; box-shadow: 0 4px 16px rgba(245,124,0,0.15); }
        .header { background: linear-gradient(135deg, #F57C00, #FF9800); padding: 30px; text-align: center; color: white; }
        .header h1 { margin: 0; font-size: 28px; }
        .content { padding: 40px; text-align: center; }
        .otp-box { background: #FFF3E0; padding: 30px; border-radius: 15px; margin: 20px 0; }
        .otp-code { font-size: 48px; font-weight: 800; color: #F57C00; letter-spacing: 8px; direction: ltr; }
        .footer { background: #ECEFF1; padding: 20px; text-align: center; color: #78909C; }
        .info { background: #E3F2FD; padding: 15px; border-radius: 10px; margin-top: 20px; }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>🍽️ مطعم Max</h1>
        </div>
        <div class="content">
            <h2 style="color:#2E3B4E;">مرحباً $name</h2>
            <p style="color:#78909C; line-height:1.8;">$message</p>
            
            <div class="otp-box">
                <div style="font-size:16px; color:#2E3B4E; margin-bottom:10px;">رمز التحقق الخاص بك</div>
                <div class="otp-code">$otp</div>
            </div>
            
            <div class="info">
                <p style="color:#1976D2;">⏰ هذا الرمز صالح لمدة 10 دقائق فقط</p>
                <p style="color:#1976D2;">🔒 يرجى عدم مشاركة هذا الرمز مع أي شخص</p>
            </div>
        </div>
        <div class="footer">
            © $year مطعم Max - جميع الحقوق محفوظة
        </div>
    </div>
</body>
</html>
HTML;
    }
}

// دالة مساعدة
function generateOTP($length = 6) {
    return str_pad(random_int(0, pow(10, $length) - 1), $length, '0', STR_PAD_LEFT);
}
?>