<?php
// admin/includes/functions.php - دوال مساعدة عامة

/**
 * رفع صورة إلى الخادم
 * @param array $file مصفوفة الملف من $_FILES
 * @return array مصفوفة تحتوي على نتيجة العملية
 */
function uploadImage($file) {
    $target_dir = "uploads/";
    
    // إنشاء المجلد إذا لم يكن موجوداً
    if (!file_exists($target_dir)) {
        if (!mkdir($target_dir, 0755, true)) {
            return ['success' => false, 'message' => 'فشل في إنشاء مجلد التحميل'];
        }
    }
    
    // التحقق من الأخطاء
    if ($file['error'] != 0) {
        $errors = [
            1 => 'حجم الملف كبير جداً',
            2 => 'حجم الملف كبير جداً',
            3 => 'تم رفع جزء من الملف فقط',
            4 => 'لم يتم رفع أي ملف',
            6 => 'مجلد مؤقت مفقود',
            7 => 'فشل في كتابة الملف',
            8 => 'تم إيقاف الرفع'
        ];
        return ['success' => false, 'message' => $errors[$file['error']] ?? 'خطأ غير معروف'];
    }
    
    // التحقق من نوع الملف
    $imageFileType = strtolower(pathinfo($file["name"], PATHINFO_EXTENSION));
    $allowed_extensions = ["jpg", "jpeg", "png", "gif", "webp"];
    
    if (!in_array($imageFileType, $allowed_extensions)) {
        return ['success' => false, 'message' => 'نوع الملف غير مدعوم. المسموح: JPG, JPEG, PNG, GIF, WebP'];
    }
    
    // التحقق من أن الملف صورة حقيقية
    $check = getimagesize($file["tmp_name"]);
    if ($check === false) {
        return ['success' => false, 'message' => 'الملف ليس صورة صالحة'];
    }
    
    // التحقق من الحجم (5MB كحد أقصى)
    if ($file["size"] > 5242880) {
        return ['success' => false, 'message' => 'حجم الملف كبير جداً (الحد الأقصى 5MB)'];
    }
    
    // إنشاء اسم فريد للملف
    $new_filename = uniqid() . "_" . time() . "." . $imageFileType;
    $target_file = $target_dir . $new_filename;
    
    // رفع الملف
    if (move_uploaded_file($file["tmp_name"], $target_file)) {
        return ['success' => true, 'filename' => $new_filename];
    }
    
    return ['success' => false, 'message' => 'حدث خطأ أثناء رفع الملف'];
}

/**
 * حذف صورة من الخادم
 * @param string $filename اسم الملف
 * @return bool نجاح أو فشل العملية
 */
function deleteImage($filename) {
    if (empty($filename)) return true;
    $file_path = "uploads/" . $filename;
    if (file_exists($file_path)) {
        return unlink($file_path);
    }
    return true;
}

/**
 * تنسيق التاريخ بشكل عربي
 * @param string $date_string التاريخ
 * @param bool $with_time عرض الوقت
 * @return string التاريخ المنسق
 */
function formatDate($date_string, $with_time = true) {
    if (empty($date_string)) return '-';
    $format = $with_time ? 'Y-m-d H:i' : 'Y-m-d';
    return date($format, strtotime($date_string));
}

/**
 * تنسيق المبلغ المالي
 * @param float $amount المبلغ
 * @return string المبلغ المنسق
 */
function formatMoney($amount) {
    return number_format($amount, 2) . ' ريال';
}

/**
 * الحصول على نص حالة الطلب
 * @param string $status كود الحالة
 * @return string نص الحالة
 */
function getOrderStatusText($status) {
    $statuses = [
        'pending' => 'قيد الانتظار',
        'accepted' => 'تم القبول',
        'on_the_way' => 'في الطريق',
        'delivered' => 'تم التوصيل'
    ];
    return $statuses[$status] ?? $status;
}

/**
 * الحصول على لون حالة الطلب
 * @param string $status كود الحالة
 * @return string كلاس اللون
 */
function getOrderStatusBadge($status) {
    $badges = [
        'pending' => 'badge-warning',
        'accepted' => 'badge-info',
        'on_the_way' => 'badge-primary',
        'delivered' => 'badge-success'
    ];
    return $badges[$status] ?? 'badge-secondary';
}

/**
 * تسجيل نشاط في سجل النظام
 * @param mysqli $conn اتصال قاعدة البيانات
 * @param string $action نوع النشاط
 * @param string $details التفاصيل
 */
function logActivity($conn, $action, $details = '') {
    $admin_id = $_SESSION['admin_id'] ?? 0;
    $action = $conn->real_escape_string($action);
    $details = $conn->real_escape_string($details);
    $ip = $_SERVER['REMOTE_ADDR'] ?? '';
    
    $conn->query("INSERT INTO activity_logs (admin_id, action, details, ip_address, created_at) 
                  VALUES ($admin_id, '$action', '$details', '$ip', NOW())");
}

/**
 * الحصول على إحصائيات سريعة
 * @param mysqli $conn اتصال قاعدة البيانات
 * @return array مصفوفة الإحصائيات
 */
function getQuickStats($conn) {
    $today = date('Y-m-d');
    $stats = [];
    
    // طلبات اليوم
    $result = $conn->query("SELECT COUNT(*) as total FROM orders WHERE DATE(created_at) = '$today'");
    $stats['today_orders'] = $result->fetch_assoc()['total'];
    
    // إيرادات اليوم
    $result = $conn->query("SELECT COALESCE(SUM(total), 0) as total FROM orders WHERE DATE(created_at) = '$today' AND status = 'delivered'");
    $stats['today_revenue'] = $result->fetch_assoc()['total'];
    
    // الكباتن النشطين
    $result = $conn->query("SELECT COUNT(*) as total FROM captains WHERE status = 'active'");
    $stats['active_captains'] = $result->fetch_assoc()['total'];
    
    // الوجبات المتاحة
    $result = $conn->query("SELECT COUNT(*) as total FROM meals WHERE is_active = 1");
    $stats['available_meals'] = $result->fetch_assoc()['total'];
    
    return $stats;
}

/**
 * إنشاء رابط آمن
 * @param string $page الصفحة
 * @param array $params بارامترات إضافية
 * @return string الرابط
 */
function url($page, $params = []) {
    $url = $page . '.php';
    if (!empty($params)) {
        $url .= '?' . http_build_query($params);
    }
    return $url;
}

/**
 * التحقق من الصلاحيات
 * @param string $permission الصلاحية المطلوبة
 * @return bool هل لديه الصلاحية
 */
function hasPermission($permission) {
    // يمكن توسيعها لاحقاً لنظام صلاحيات متكامل
    return true;
}