<?php
// arrive_ride.php
require_once __DIR__ . '/../../connect.php'; 

try {
    $con_ride = Database::get('ride');
} catch (Exception $e) {
    error_log("[arrive_ride] Failed to connect to Ride Database: " . $e->getMessage());
}

$rideId = filterRequest("ride_id");
$driverId = filterRequest("driver_id");
$passengerToken = filterRequest("passengerToken");

if (!$rideId || !$driverId) {
    jsonError("Missing required parameters.");
    exit;
}

try {
    // 1. تحديث الحالة في السيرفر البعيد (Remote DB - con_ride)
    $stmtRemote = $con_ride->prepare("UPDATE ride SET status = 'arrived', updated_at = NOW() WHERE id = ? AND driver_id = ? AND status = 'Apply'");
    $stmtRemote->execute([$rideId, $driverId]);

    // 2. تحديث الحالة في السيرفر المحلي (Local DB - con)
    if (isset($con)) {
        $stmtLocal = $con->prepare("UPDATE ride SET status = 'arrived', updated_at = NOW() WHERE id = ? AND driver_id = ? AND status = 'Apply'");
        $stmtLocal->execute([$rideId, $driverId]);
    }

    // 3. جلب بيانات الراكب للإرسال
    // نستخدم con_ride لضمان الدقة
    $stmtPas = $con_ride->prepare("SELECT passenger_id FROM ride WHERE id = ?");
    $stmtPas->execute([$rideId]);
    $passenger_id = $stmtPas->fetchColumn();

    if ($passenger_id) {
        
        // أ) إرسال Socket (الأسرع)
        $payload = [
            'status'  => 'arrived',
            'ride_id' => $rideId,
            'msg'     => 'السائق وصل إلى موقعك 🚖'
        ];
        
        if (function_exists('notifyPassengerOnRideServer')) {
            notifyPassengerOnRideServer($passenger_id, $payload);
        }

        // ب) إرسال FCM (باستخدام الدالة الجديدة)
        if (!empty($passengerToken)) {
            $fcmData = [
                'category' => 'Arrive Ride', // نفس الاسم القديم لضمان عمل التطبيق
                'ride_id'  => (string)$rideId,
                'status'   => 'arrived'
            ];
            
            // 🔥 استخدام sendFCM_Internal كرسالة صامتة
            sendFCM_Internal(
                $passengerToken,                      // الهدف
                "",                                   // تفريغ العنوان
                "",                                   // تفريغ النص
                $fcmData,                             // البيانات
                "Arrive Ride",                        // التصنيف
                false                                 // ليس Topic
            );
        }
    }

    jsonSuccess(null, "Arrival notified successfully");

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