<?php
// getDriverTimeOnline.php
// الغرض: توليد تقرير نشاط السائقين لآخر 10 أيام بناءً على الملخص اليومي

require_once __DIR__ . '/../../get_connect.php';

header('Content-Type: application/json; charset=utf-8');

// إعدادات التقرير
$daysToLookBack = 10; // عدد الأيام في الماضي
$jsonFileName = 'active_drivers_cache.json';
$savePath = __DIR__ . '/' . $jsonFileName;

try {
    // =================================================================
    // 1. جلب البيانات من جدول الملخصات (سيرفر اللوكيشن) ⚡
    // =================================================================
    // نجمع الثواني لكل سائق خلال الفترة المحددة
    
    $sql_summary = "
        SELECT 
            driver_id, 
            SUM(total_seconds) as grand_total_seconds,
            COUNT(DISTINCT date) as days_worked -- (اختياري) معرفة عدد أيام العمل الفعلية
        FROM driver_daily_summary
        WHERE date >= DATE_SUB(CURDATE(), INTERVAL ? DAY)
        GROUP BY driver_id
        HAVING grand_total_seconds > 60 -- (اختياري) تجاهل من عمل أقل من دقيقة
        ORDER BY grand_total_seconds DESC
    ";

    $stmt = $con_tracking->prepare($sql_summary);
    $stmt->execute([$daysToLookBack]);
    $summary_data = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if (empty($summary_data)) {
        // حفظ ملف فارغ وإنهاء
        saveJsonFile($savePath, ["last_updated" => date('Y-m-d H:i:s'), "data" => []]);
        printSuccess("No active drivers found in summary.", $savePath);
        exit;
    }

    // =================================================================
    // 2. جلب تفاصيل السائقين (الأسماء) من السيرفر الرئيسي 📝
    // =================================================================
    
    // استخراج الـ IDs
    $driver_ids = array_column($summary_data, 'driver_id');
    
    // تجهيز الـ Placeholders (?,?,?)
    $placeholders = implode(',', array_fill(0, count($driver_ids), '?'));

    $sql_drivers = "SELECT id, name_arabic, phone, created_at FROM driver WHERE id IN ($placeholders)";
    
    $stmt_d = $con->prepare($sql_drivers);
    $stmt_d->execute($driver_ids);
    $drivers_raw = $stmt_d->fetchAll(PDO::FETCH_ASSOC);

    // تحويل البيانات لـ Map لسرعة الدمج: [id => data]
    $drivers_map = [];
    foreach ($drivers_raw as $d) {
        $drivers_map[$d['id']] = $d;
    }

    // =================================================================
    // 3. دمج البيانات وفك التشفير وتنسيق الوقت 🔄
    // =================================================================
    
    $final_report = [];
    $fieldsToDecrypt = ['phone', 'name_arabic']; // الحقول المشفرة

    foreach ($summary_data as $row) {
        $did = $row['driver_id'];
        $seconds = $row['grand_total_seconds'];

        // البيانات الشخصية
        $personalData = isset($drivers_map[$did]) ? $drivers_map[$did] : ['name_arabic' => 'Unknown', 'phone' => ''];

        // فك التشفير
        foreach ($fieldsToDecrypt as $field) {
            if (!empty($personalData[$field])) {
                try {
                    $personalData[$field] = $encryptionHelper->decryptData($personalData[$field]);
                } catch (Exception $e) {
                    // ابقها مشفرة أو ضع قيمة افتراضية عند الفشل
                }
            }
        }

        // تنسيق الوقت (مقروء للبشر)
        $hours = floor($seconds / 3600);
        $minutes = floor(($seconds % 3600) / 60);
        $human_time = sprintf("%d ساعة و %d دقيقة", $hours, $minutes);

        // بناء الصف النهائي
        $final_report[] = [
            'driver_id'   => $did,
            'name'        => $personalData['name_arabic'],
            'phone'       => $personalData['phone'],
            'join_date'   => $personalData['created_at'], // تاريخ انضمام السائق
            'total_seconds' => $seconds,
            'active_time' => $human_time,
            'days_active' => $row['days_worked'] // عدد الأيام التي عمل فيها خلال الـ 10 أيام
        ];
    }

    // =================================================================
    // 4. الحفظ والنشر 💾
    // =================================================================
    
    $output = [
        "last_updated" => date('Y-m-d H:i:s'),
        "period_days" => $daysToLookBack,
        "total_drivers" => count($final_report),
        "data" => $final_report
    ];

    saveJsonFile($savePath, $output);
    printSuccess("Report generated based on Daily Summary.", $savePath);

} catch (Exception $e) {
    jsonError("Error: " . $e->getMessage());
}

// --- دوال مساعدة ---
function saveJsonFile($path, $data) {
    $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    file_put_contents($path, $json);
}
?>