<?php
/**
 * إشعارات تليجرام المتقدمة
 */

require_once __DIR__ . '/telegram.php';
require_once __DIR__ . '/../config/database.php';

/**
 * إشعار عند إضافة منتج للسلة
 */
function notifyAddToCart($user_id, $product_id, $quantity, $device_type = 'Unknown') {
    try {
        $database = new Database();
        $db = $database->getConnection();
        
        // جلب معلومات المنتج
        $query = "SELECT name, price, discount_price FROM products WHERE id = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$product_id]);
        $product = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$product) return false;
        
        // جلب معلومات المستخدم
        $user_name = 'زائر';
        if ($user_id) {
            $query = "SELECT name FROM users WHERE id = ?";
            $stmt = $db->prepare($query);
            $stmt->execute([$user_id]);
            $user = $stmt->fetch(PDO::FETCH_ASSOC);
            $user_name = $user['name'] ?? 'مستخدم #' . $user_id;
        }
        
        $price = $product['discount_price'] ?? $product['price'];
        $total = $price * $quantity;
        
        $emoji_device = $device_type === 'Mobile' ? '📱' : '💻';
        
        $message = "🛒 <b>منتج جديد في السلة!</b>/n/n";
        $message .= "👤 <b>العميل:</b> " . htmlspecialchars($user_name) . "/n";
        $message .= "📦 <b>المنتج:</b> " . htmlspecialchars($product['name']) . "/n";
        $message .= "💰 <b>السعر:</b> " . number_format($price, 2) . " ج.م/n";
        $message .= "🔢 <b>الكمية:</b> " . $quantity . "/n";
        $message .= "💵 <b>الإجمالي:</b> " . number_format($total, 2) . " ج.م/n";
        $message .= "$emoji_device <b>الجهاز:</b> $device_type/n";
        $message .= "⏰ <b>الوقت:</b> " . date('Y-m-d H:i:s');
        
        return sendTelegramMessage($message);
        
    } catch (Exception $e) {
        error_log("Telegram notification error (add to cart): " . $e->getMessage());
        return false;
    }
}

/**
 * إشعار محسّن عند طلب جديد
 */
function notifyNewOrder($order_id) {
    try {
        $database = new Database();
        $db = $database->getConnection();
        
        // جلب معلومات الطلب
        $query = "SELECT o.*, u.name as user_name, u.email, u.phone 
                  FROM orders o 
                  LEFT JOIN users u ON o.user_id = u.id 
                  WHERE o.id = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$order_id]);
        $order = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$order) return false;
        
        // جلب منتجات الطلب
        $query = "SELECT oi.*, p.name as product_name 
                  FROM order_items oi 
                  JOIN products p ON oi.product_id = p.id 
                  WHERE oi.order_id = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$order_id]);
        $items = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        $message = "🎉 <b>طلب جديد!</b> #" . $order_id . "/n/n";
        $message .= "👤 <b>العميل:</b> " . htmlspecialchars($order['user_name'] ?? $order['customer_name']) . "/n";
        $message .= "📞 <b>الهاتف:</b> " . htmlspecialchars($order['phone'] ?? 'غير متوفر') . "/n";
        $message .= "📍 <b>العنوان:</b> " . htmlspecialchars($order['address'] ?? 'غير متوفر') . "/n/n";
        
        $message .= "🛍️ <b>المنتجات:</b>/n";
        foreach ($items as $item) {
            $item_total = $item['price'] * $item['quantity'];
            $message .= "• " . htmlspecialchars($item['product_name']) . " × " . $item['quantity'] . " = " . number_format($item_total, 2) . " ج.م/n";
        }
        
        $message .= "/n💰 <b>الإجمالي:</b> " . number_format($order['total_amount'], 2) . " ج.م/n";
        
        if (!empty($order['shipping_cost'])) {
            $message .= "🚚 <b>الشحن:</b> " . number_format($order['shipping_cost'], 2) . " ج.م/n";
        }
        
        $final_total = $order['total_amount'] + ($order['shipping_cost'] ?? 0);
        $message .= "💳 <b>المبلغ النهائي:</b> " . number_format($final_total, 2) . " ج.م/n/n";
        
        $message .= "💳 <b>طريقة الدفع:</b> " . ($order['payment_method'] === 'cod' ? 'الدفع عند الاستلام' : 'أونلاين') . "/n";
        $message .= "⏰ <b>الوقت:</b> " . date('Y-m-d H:i:s', strtotime($order['created_at']));
        
        return sendTelegramMessage($message);
        
    } catch (Exception $e) {
        error_log("Telegram notification error (new order): " . $e->getMessage());
        return false;
    }
}

/**
 * إشعار عند تسجيل مستخدم جديد
 */
function notifyNewUser($user_id) {
    try {
        $database = new Database();
        $db = $database->getConnection();
        
        $query = "SELECT * FROM users WHERE id = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$user_id]);
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$user) return false;
        
        // معرفة نوع الجهاز
        $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
        $device_type = 'Desktop';
        if (preg_match('/mobile|android|iphone/i', $user_agent)) {
            $device_type = 'Mobile';
        }
        $emoji_device = $device_type === 'Mobile' ? '📱' : '💻';
        
        $message = "👤 <b>مستخدم جديد!</b>/n/n";
        $message .= "✨ <b>الاسم:</b> " . htmlspecialchars($user['name']) . "/n";
        $message .= "🆔 <b>ID:</b> #" . $user['id'] . "/n";
        $message .= "📧 <b>البريد:</b> " . htmlspecialchars($user['email']) . "/n";
        
        if (!empty($user['phone'])) {
            $message .= "📞 <b>الهاتف:</b> " . htmlspecialchars($user['phone']) . "/n";
        }
        
        $message .= "$emoji_device <b>الجهاز:</b> $device_type/n";
        $message .= "⏰ <b>التسجيل:</b> " . date('Y-m-d H:i:s', strtotime($user['created_at']));
        
        return sendTelegramMessage($message);
        
    } catch (Exception $e) {
        error_log("Telegram notification error (new user): " . $e->getMessage());
        return false;
    }
}

/**
 * تقرير يومي تلقائي
 */
function sendDailyReport() {
    try {
        $database = new Database();
        $db = $database->getConnection();
        
        $today = date('Y-m-d');
        
        // عدد الزيارات
        $query = "SELECT COUNT(*) as count FROM site_visits WHERE DATE(created_at) = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$today]);
        $visits = $stmt->fetchColumn();
        
        // عدد الطلبات
        $query = "SELECT COUNT(*) as count FROM orders WHERE DATE(created_at) = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$today]);
        $orders = $stmt->fetchColumn();
        
        // إجمالي المبيعات
        $query = "SELECT SUM(total_amount) as total FROM orders WHERE DATE(created_at) = ? AND status != 'cancelled'";
        $stmt = $db->prepare($query);
        $stmt->execute([$today]);
        $sales = $stmt->fetchColumn() ?? 0;
        
        // مستخدمين جدد
        $query = "SELECT COUNT(*) as count FROM users WHERE DATE(created_at) = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$today]);
        $new_users = $stmt->fetchColumn();
        
        // تقييمات جديدة
        $query = "SELECT COUNT(*) as count FROM reviews WHERE DATE(created_at) = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$today]);
        $reviews = $stmt->fetchColumn();
        
        // مقارنة بالأمس
        $yesterday = date('Y-m-d', strtotime('-1 day'));
        $query = "SELECT COUNT(*) as count FROM site_visits WHERE DATE(created_at) = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$yesterday]);
        $yesterday_visits = $stmt->fetchColumn();
        
        $change = $yesterday_visits > 0 ? round((($visits - $yesterday_visits) / $yesterday_visits) * 100) : 0;
        $change_emoji = $change > 0 ? '📈' : ($change < 0 ? '📉' : '➡️');
        $change_text = $change > 0 ? "+$change%" : "$change%";
        
        $message = "📊 <b>تقرير اليوم</b>/n/n";
        $message .= "📅 <b>التاريخ:</b> " . date('Y-m-d') . "/n/n";
        $message .= "👥 <b>الزيارات:</b> " . number_format($visits) . " زيارة/n";
        $message .= "🛒 <b>الطلبات:</b> " . number_format($orders) . " طلب/n";
        $message .= "💰 <b>المبيعات:</b> " . number_format($sales, 2) . " ج.م/n";
        $message .= "👤 <b>مستخدمين جدد:</b> " . number_format($new_users) . "/n";
        $message .= "⭐ <b>تقييمات:</b> " . number_format($reviews) . "/n/n";
        $message .= "$change_emoji <b>مقارنة بالأمس:</b> $change_text";
        
        return sendTelegramMessage($message);
        
    } catch (Exception $e) {
        error_log("Telegram notification error (daily report): " . $e->getMessage());
        return false;
    }
}

/**
 * تحذير عند نفاد المخزون
 */
function notifyLowStock($product_id) {
    try {
        $database = new Database();
        $db = $database->getConnection();
        
        $query = "SELECT * FROM products WHERE id = ?";
        $stmt = $db->prepare($query);
        $stmt->execute([$product_id]);
        $product = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$product) return false;
        
        // حساب المبيعات الشهرية
        $query = "SELECT SUM(oi.quantity) as total_sold 
                  FROM order_items oi 
                  JOIN orders o ON oi.order_id = o.id 
                  WHERE oi.product_id = ? 
                  AND o.created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)
                  AND o.status != 'cancelled'";
        $stmt = $db->prepare($query);
        $stmt->execute([$product_id]);
        $monthly_sales = $stmt->fetchColumn() ?? 0;
        
        $message = "🛑 <b>تحذير: نفاد المخزون!</b>/n/n";
        $message .= "📦 <b>المنتج:</b> " . htmlspecialchars($product['name']) . "/n";
        $message .= "🆔 <b>ID:</b> #" . $product['id'] . "/n";
        $message .= "📊 <b>الكمية المتبقية:</b> " . $product['stock_quantity'] . "/n";
        $message .= "💰 <b>السعر:</b> " . number_format($product['price'], 2) . " ج.م/n";
        $message .= "📈 <b>المبيعات الشهر:</b> " . $monthly_sales . " قطعة/n/n";
        $message .= "⚠️ <b>يُنصح بإعادة التوريد فوراً!</b>";
        
        return sendTelegramMessage($message);
        
    } catch (Exception $e) {
        error_log("Telegram notification error (low stock): " . $e->getMessage());
        return false;
    }
}
?>
