<?php
// تأكد من أن ملف connect.php يقوم بتهيئة اتصالين:
// $con          -> يتصل بقاعدة البيانات الأساسية (driver, CarRegistration)
// $con_tracking -> يتصل بقاعدة بيانات التتبع (car_locations)
// وأنه يحتوي على كائن التشفير $encryptionHelper
require_once __DIR__ . '/../../connect.php';

try {
    $driver_id = filterRequest("driver_id");

    if ($driver_id === false || empty($driver_id)) {
        jsonError("Invalid driver_id provided");
        exit;
    }

    // =================================================================
    // الخطوة 1: جلب آخر موقع للسائق من قاعدة بيانات التتبع
    // =================================================================
    $sql_location = "SELECT
                        driver_id, 
                        latitude, 
                        longitude, 
                        heading, 
                        speed, 
                        status, 
                        created_at, 
                        updated_at
                    FROM
                        car_locations
                    WHERE
                        driver_id = ?
                    ORDER BY
                        updated_at DESC
                    LIMIT 1";

    $stmt_location = $con_tracking->prepare($sql_location);
    $stmt_location->execute([$driver_id]);
    $location_data = $stmt_location->fetch(PDO::FETCH_ASSOC);

    // إذا لم نجد أي موقع، لا داعي لإكمال البحث
    if (empty($location_data)) {
        jsonError("No car locations found");
        exit;
    }

    // =================================================================
    // الخطوة 2: جلب البيانات الثابتة للسائق من القاعدة الأساسية
    // =================================================================
    $sql_driver_info = "SELECT
                            d.gender,
                            cr.model
                        FROM
                            driver d
                        LEFT JOIN CarRegistration cr ON d.id = cr.driverID
                        WHERE
                            d.id = ?";
    
    $stmt_driver_info = $con->prepare($sql_driver_info);
    $stmt_driver_info->execute([$driver_id]);
    // نستخدم fetch وليس fetchAll لأننا نتوقع سائق واحد فقط
    $driver_info = $stmt_driver_info->fetch(PDO::FETCH_ASSOC);

    // =================================================================
    // الخطوة 2.5: فك تشفير الجندر (New Step)
    // =================================================================
    if (!empty($driver_info)) {
        // التحقق من وجود قيمة في حقل الجندر قبل فك تشفيرها
        if (isset($driver_info['gender']) && !empty($driver_info['gender'])) {
            $driver_info['gender'] = $encryptionHelper->decryptData($driver_info['gender']);
        }
    } else {
        $driver_info = []; // اجعله مصفوفة فارغة لتجنب خطأ في الدمج
    }

    // =================================================================
    // الخطوة 3: دمج النتائج (Application-Side Join)
    // =================================================================
    
    // دمج بيانات الموقع مع بيانات السائق (التي تم فك تشفيرها الآن)
    $final_result = array_merge($location_data, $driver_info);
    
    // إرجاع النتيجة داخل مصفوفة كما في السكربت الأصلي
    jsonSuccess([$final_result]);


} catch (PDOException $e) {
    jsonError("Database error: " . $e->getMessage());
} catch (Throwable $e) {
    jsonError("Internal error: " . $e->getMessage());
}
?>