<?php
/**
 * Telegram Bot Helper
 * Send notifications to Telegram
 */

class TelegramBot {
    private $bot_token;
    private $chat_id;
    private $enabled;
    
    public function __construct($db) {
        // Get settings from database
        try {
            $stmt = $db->prepare("SELECT setting_key, setting_value FROM settings WHERE setting_key LIKE 'telegram_%'");
            $stmt->execute();
            $settings = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
            
            $this->bot_token = $settings['telegram_bot_token'] ?? '';
            $this->chat_id = $settings['telegram_chat_id'] ?? '';
            $this->enabled = ($settings['telegram_enabled'] ?? '0') === '1';
        } catch (Exception $e) {
            $this->enabled = false;
        }
    }
    
    public function sendMessage($message, $parse_mode = 'HTML') {
        if (!$this->enabled || empty($this->bot_token) || empty($this->chat_id)) {
            return false;
        }
        
        $url = "https://api.telegram.org/bot{$this->bot_token}/sendMessage";
        
        $data = [
            'chat_id' => $this->chat_id,
            'text' => $message,
            'parse_mode' => $parse_mode
        ];
        
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        
        $response = curl_exec($ch);
        $error = curl_error($ch);
        curl_close($ch);
        
        if ($error) {
            error_log("Telegram Error: " . $error);
            return false;
        }
        
        return json_decode($response, true);
    }
    
    public function sendNewOrderNotification($order, $items) {
        // Header with order number
        $message = "🎉 <b>طلب جديد وصل!</b>/n/n";
        $message .= "╔═══════════════════════╗/n";
        $message .= "   📋 <code>{$order['order_number']}</code>\n";
        $message .= "╚═══════════════════════╝/n/n";
        
        // Customer info section
        $message .= "┏━━━ 👤 <b>بيانات العميل</b> ━━━┓/n";
        $message .= "┃ 📛 <b>الاسم:</b> {$order['first_name']} {$order['last_name']}\n";
        $message .= "┃ 📱 <b>الجوال:</b> <code>{$order['phone']}</code>\n";
        $message .= "┃ 📧 <b>البريد:</b> {$order['email']}\n";
        $message .= "┗━━━━━━━━━━━━━━━━━━━━━┛/n/n";
        
        // Shipping address section
        $message .= "┏━━━ 📍 <b>عنوان الشحن</b> ━━━┓/n";
        $message .= "┃ {$order['address']}\n";
        $message .= "┃ 🏙️ {$order['city']}\n";
        $message .= "┗━━━━━━━━━━━━━━━━━━━━━┛/n/n";
        
        // Products section
        $message .= "┏━━━ 🛒 <b>المنتجات</b> ━━━┓/n";
        foreach ($items as $index => $item) {
            $message .= "┃/n";
            $message .= "┃ <b>" . ($index + 1) . ".</b> {$item['product_name']}\n";
            $message .= "┃    💰 {$item['price']} ج.م × {$item['quantity']} = <b>{$item['total']} ج.م</b>\n";
        }
        $message .= "┗━━━━━━━━━━━━━━━━━━━━━┛/n/n";
        
        // Order summary section
        $message .= "┏━━━ 💰 <b>ملخص الطلب</b> ━━━┓/n";
        $message .= "┃ المجموع الفرعي: {$order['subtotal']} ج.م\n";
        $message .= "┃ الشحن: " . ($order['shipping'] > 0 ? "{$order['shipping']} ج.م" : "🎁 مجاني") . "/n";
        $message .= "┃ الضريبة (15%): {$order['tax']} ج.م\n";
        if (isset($order['discount']) && $order['discount'] > 0) {
            $message .= "┃ 🎟️ الخصم: <s>{$order['discount']} ج.م</s>\n";
        }
        $message .= "┃/n";
        $message .= "┃ 💵 <b>الإجمالي النهائي: {$order['total']} ج.م</b>\n";
        $message .= "┗━━━━━━━━━━━━━━━━━━━━━┛/n/n";
        
        // Payment method
        $payment_icon = $order['payment_method'] === 'cod' ? '💵' : '💳';
        $payment_text = $order['payment_method'] === 'cod' ? 'الدفع عند الاستلام' : $order['payment_method'];
        $message .= "💳 <b>طريقة الدفع:</b> {$payment_icon} {$payment_text}/n";
        
        // Notes if exists
        if (!empty($order['notes'])) {
            $message .= "/n┏━━━ 📝 <b>ملاحظات العميل</b> ━━━┓/n";
            $message .= "┃ {$order['notes']}\n";
            $message .= "┗━━━━━━━━━━━━━━━━━━━━━┛/n";
        }
        
        // Footer with timestamp
        $message .= "\n⏰ {$order['created_at']}\n";
        $message .= "━━━━━━━━━━━━━━━━━━━━━━━";
        
        return $this->sendMessage($message);
    }
    
    public function sendOrderStatusUpdate($order, $new_status) {
        $status_config = [
            'pending' => ['icon' => '⏳', 'text' => 'في الانتظار', 'emoji' => '⏰'],
            'processing' => ['icon' => '⚙️', 'text' => 'قيد المعالجة', 'emoji' => '🔄'],
            'shipped' => ['icon' => '🚚', 'text' => 'تم الشحن', 'emoji' => '📦'],
            'delivered' => ['icon' => '✅', 'text' => 'تم التسليم', 'emoji' => '🎉'],
            'cancelled' => ['icon' => '❌', 'text' => 'ملغي', 'emoji' => '🚫']
        ];
        
        $status = $status_config[$new_status] ?? $status_config['pending'];
        
        $message = "{$status['emoji']} <b>تحديث حالة الطلب</b>\n\n";
        $message .= "╔═══════════════════════╗/n";
        $message .= "   📋 <code>{$order['order_number']}</code>\n";
        $message .= "╚═══════════════════════╝/n/n";
        
        $message .= "┏━━━ 👤 <b>معلومات العميل</b> ━━━┓/n";
        $message .= "┃ 📛 {$order['first_name']} {$order['last_name']}\n";
        $message .= "┃ 📱 <code>{$order['phone']}</code>\n";
        $message .= "┗━━━━━━━━━━━━━━━━━━━━━┛/n/n";
        
        $message .= "┏━━━ 🔄 <b>الحالة الجديدة</b> ━━━┓/n";
        $message .= "┃/n";
        $message .= "┃   {$status['icon']} <b>{$status['text']}</b>\n";
        $message .= "┃/n";
        $message .= "┗━━━━━━━━━━━━━━━━━━━━━┛/n/n";
        
        $message .= "💰 <b>المبلغ:</b> {$order['total']} ج.م\n";
        $message .= "⏰ " . date('Y-m-d H:i') . "/n";
        $message .= "━━━━━━━━━━━━━━━━━━━━━━━";
        
        return $this->sendMessage($message);
    }
    
    public function testConnection() {
        if (!$this->enabled || empty($this->bot_token)) {
            return ['success' => false, 'message' => 'البوت غير مفعّل أو التوكن فارغ'];
        }
        
        $url = "https://api.telegram.org/bot{$this->bot_token}/getMe";
        
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        
        $response = curl_exec($ch);
        $error = curl_error($ch);
        curl_close($ch);
        
        if ($error) {
            return ['success' => false, 'message' => 'خطأ في الاتصال: ' . $error];
        }
        
        $result = json_decode($response, true);
        
        if ($result['ok']) {
            return [
                'success' => true, 
                'message' => 'تم الاتصال بنجاح!',
                'bot_name' => $result['result']['first_name']
            ];
        } else {
            return ['success' => false, 'message' => 'فشل الاتصال: ' . ($result['description'] ?? 'خطأ غير معروف')];
        }
    }
}

/**
 * دالة مساعدة لإرسال رسالة تليجرام بسرعة
 * Helper function to send Telegram message quickly
 */
function sendTelegramMessage($message, $parse_mode = 'HTML') {
    try {
        require_once __DIR__ . '/../config/database.php';
        $database = new Database();
        $db = $database->getConnection();
        
        $telegram = new TelegramBot($db);
        return $telegram->sendMessage($message, $parse_mode);
    } catch (Exception $e) {
        error_log("sendTelegramMessage error: " . $e->getMessage());
        return false;
    }
}
?>
