diff --git a/loction_server/api_get_nearby.php b/loction_server/api_get_nearby.php
new file mode 100755
index 00000000..03e38365
--- /dev/null
+++ b/loction_server/api_get_nearby.php
@@ -0,0 +1,81 @@
+ false, 'msg' => 'Unauthorized']);
+ exit;
+}
+
+$lat = $_REQUEST['lat'] ?? null;
+$lng = $_REQUEST['lng'] ?? null;
+$radius = $_REQUEST['radius'] ?? 5;
+$limit = $_REQUEST['limit'] ?? 100;
+
+if (!$lat || !$lng) {
+ echo json_encode(['status' => false, 'msg' => 'Invalid Coordinates']); exit;
+}
+
+try {
+ $redis = new Client(['scheme'=>'tcp',
+ 'host'=>'127.0.0.1',
+ 'password' => $PASS_REDIS,
+ 'port'=>6379,
+ 'database' => 0]
+ );
+ $redis->connect();
+
+ // 🔥 التعديل هنا: إضافة WITHCOORD لجلب الإحداثيات من الريدز مباشرة
+ $geoResults = $redis->georadius(
+ 'geo:drivers:available',
+ $lng, $lat, $radius, 'km',
+ ['WITHDIST' => true, 'WITHCOORD' => true, 'COUNT' => $limit * 2, 'SORT' => 'ASC']
+ );
+
+ $validDrivers = [];
+ $currentTime = time();
+ $max_silence = 180;
+
+ foreach ($geoResults as $res) {
+ // هيكل النتيجة مع WITHCOORD يختلف قليلاً
+ $d_id = $res[0]; // ID
+ $d_dist = $res[1]; // Distance
+ $d_coord= $res[2]; // [0=>lng, 1=>lat] 🔥 الإحداثيات هنا
+
+ $profile = $redis->hgetall("driver:profile:$d_id");
+ $lastUpdate = isset($profile['updated_at']) ? (int)$profile['updated_at'] : 0;
+
+ if (empty($profile) || ($currentTime - $lastUpdate) > $max_silence) {
+ $redis->zrem('geo:drivers:available', $d_id);
+ $redis->zrem('geo:drivers:busy', $d_id);
+ continue;
+ }
+
+ $validDrivers[] = [
+ 'id' => $d_id,
+ 'distance' => $d_dist,
+ 'heading' => $profile['heading'] ?? 0,
+ 'speed' => $profile['speed'] ?? 0,
+ 'lat' => $d_coord[1], // Latitude من الريدز (أدق)
+ 'lng' => $d_coord[0] // Longitude من الريدز
+ ];
+
+ if (count($validDrivers) >= $limit) break;
+ }
+
+ echo json_encode(['status' => true, 'data' => $validDrivers]);
+
+} catch (Exception $e) {
+ echo json_encode(['status' => false, 'msg' => $e->getMessage()]);
+}
+?>
\ No newline at end of file
diff --git a/loction_server/composer.json b/loction_server/composer.json
new file mode 100644
index 00000000..5a6a39c5
--- /dev/null
+++ b/loction_server/composer.json
@@ -0,0 +1,7 @@
+{
+ "require": {
+ "workerman/phpsocket.io": "^2.2",
+ "firebase/php-jwt": "^7.0",
+ "predis/predis": "^3.3"
+ }
+}
diff --git a/loction_server/driver_socket.php b/loction_server/driver_socket.php
new file mode 100755
index 00000000..a7e823ab
--- /dev/null
+++ b/loction_server/driver_socket.php
@@ -0,0 +1,601 @@
+ping();
+ return $redis;
+ } catch (\Exception $e) {
+ logMsg('⚠️ Redis ping failed, reconnecting...');
+ $redis = null;
+ }
+ }
+
+ try {
+ $client = new RedisClient([
+ 'scheme' => 'tcp',
+ 'host' => '127.0.0.1',
+ 'port' => 6379,
+ 'password' => $redisPass,
+ 'read_write_timeout' => 0,
+ ]);
+ $client->connect();
+ $redis = $client;
+ return $redis;
+ } catch (\Exception $e) {
+ logMsg('❌ Redis Error: ' . $e->getMessage());
+ return null;
+ }
+}
+
+// ============================================================
+// 📐 Haversine Distance (متر)
+// ============================================================
+function haversineDistance(float $lat1, float $lng1, float $lat2, float $lng2): float {
+ $R = 6371000;
+ $dLat = deg2rad($lat2 - $lat1);
+ $dLng = deg2rad($lng2 - $lng1);
+ $a = sin($dLat / 2) ** 2
+ + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLng / 2) ** 2;
+ return $R * 2 * atan2(sqrt($a), sqrt(1 - $a));
+}
+
+// ============================================================
+// 📡 Forward موقع السائق → سيرفر الراكب (ASYNC)
+// ============================================================
+function forwardLocationToPassengerSocket(
+ string $driverId,
+ string $passengerId,
+ array $payload,
+ string $internalKey,
+ array &$fwdThrottle
+): void {
+ if (empty($passengerId)) return;
+
+ $now = time();
+ $last = $fwdThrottle[$driverId] ?? null;
+
+ if ($last !== null) {
+ $timeDiff = $now - $last['ts'];
+ $dist = haversineDistance(
+ $last['lat'], $last['lng'],
+ (float)$payload['lat'], (float)$payload['lng']
+ );
+ if ($dist < FORWARD_MIN_METERS && $timeDiff < FORWARD_MAX_SECONDS) return;
+ }
+
+ $fwdThrottle[$driverId] = [
+ 'ts' => $now,
+ 'lat' => (float)$payload['lat'],
+ 'lng' => (float)$payload['lng'],
+ ];
+
+ $passengerSocketUrl = getenv('PASSENGER_SOCKET_INTERNAL_URL') ?: 'http://127.0.0.1:3031';
+ $http = new AsyncHttp();
+ $http->request(
+ $passengerSocketUrl,
+ [
+ 'method' => 'POST',
+ 'data' => http_build_query([
+ 'action' => 'update_driver_location',
+ 'passenger_id' => $passengerId,
+ 'payload' => json_encode($payload),
+ ]),
+ 'headers' => [
+ 'Content-Type' => 'application/x-www-form-urlencoded',
+ 'x-internal-key' => $internalKey,
+ 'Connection' => 'close',
+ ],
+ 'timeout' => 3,
+ ],
+ null,
+ fn(\Exception $e) => logMsg('⚠️ Forward failed: ' . $e->getMessage())
+ );
+}
+
+// ============================================================
+// 📲 FCM (ASYNC)
+// ============================================================
+function sendFCM_Async(string $token, string $title, string $body, array $rideData): void {
+ if (empty($token)) return;
+
+ $http = new AsyncHttp();
+ $http->request(
+ 'https://api.intaleq.xyz/intaleq/ride/firebase/send_fcm.php',
+ [
+ 'method' => 'POST',
+ 'data' => json_encode([
+ 'target' => $token,
+ 'title' => $title,
+ 'body' => $body,
+ 'isTopic' => false,
+ 'category' => 'Order',
+ 'tone' => 'start',
+ 'passengerList' => json_encode($rideData),
+ ]),
+ 'headers' => ['Content-Type' => 'application/json; charset=UTF-8'],
+ 'timeout' => 5,
+ ],
+ null,
+ fn(\Exception $e) => logMsg('⚠️ FCM failed: ' . $e->getMessage())
+ );
+}
+
+// ============================================================
+// 🧠 Memory State & Event Buffer
+// ============================================================
+$connectedDrivers = [];
+$active_orders_drivers = [];
+$driverState = [];
+$fwdThrottle = [];
+$eventBuffer = []; // 🚀 Level 2: مصفوفة تجميع الأحداث لـ Redis
+
+// ============================================================
+// 🚀 Socket.IO — بورت 2020
+// ============================================================
+$io = new SocketIO(2020);
+
+// ============================================================
+// A. Internal HTTP Server & Redis Batch Processor (Worker Start)
+// ============================================================
+$io->on('workerStart', function () use ($io, $INTERNAL_KEY) {
+
+ // 🚀 1. Redis Pipeline Batch Processor (Level 2)
+ // يعمل كل نصف ثانية، يجمع كل الأوامر ويرسلها لـ Redis دفعة واحدة
+ Timer::add(REDIS_BATCH_INTERVAL, function() {
+ global $eventBuffer;
+ if (empty($eventBuffer)) return;
+
+ $redis = getRedis();
+ if (!$redis) return;
+
+ try {
+ $pipe = $redis->pipeline();
+ $processedCount = 0;
+
+ foreach ($eventBuffer as $driverId => $ops) {
+ $profileKey = "driver:profile:$driverId";
+ $processedCount++;
+
+ if (isset($ops['hmset'])) {
+ $pipe->hmset($profileKey, $ops['hmset']);
+ }
+ if (isset($ops['expire'])) {
+ $pipe->expire($profileKey, $ops['expire']);
+ }
+ if (isset($ops['status_change'])) {
+ $oldStatus = $ops['status_change']['old'];
+ $newStatus = $ops['status_change']['new'];
+
+ // إزالة من المجموعة القديمة
+ if ($oldStatus === 'on') $pipe->zrem('geo:drivers:busy', $driverId);
+ if ($oldStatus === 'off') $pipe->zrem('geo:drivers:available', $driverId);
+
+ if ($newStatus === 'close' || $newStatus === 'blocked') {
+ $pipe->zrem('geo:drivers:available', $driverId);
+ $pipe->zrem('geo:drivers:busy', $driverId);
+ } elseif ($newStatus === 'off') {
+ // أصبح متاحاً → أضفه إلى geo:drivers:available
+ $pipe->zadd('geo:drivers:available', 0, $driverId);
+ } elseif ($newStatus === 'on') {
+ // أصبح مشغولاً → أضفه إلى geo:drivers:busy
+ $pipe->zadd('geo:drivers:busy', 0, $driverId);
+ }
+ }
+ if (isset($ops['geoadd'])) {
+ $st = $ops['geoadd']['status'];
+ $lng = $ops['geoadd']['lng'];
+ $lat = $ops['geoadd']['lat'];
+
+ if ($st === 'off') {
+ $pipe->geoadd('geo:drivers:available', $lng, $lat, $driverId);
+ } elseif ($st === 'on') {
+ $pipe->geoadd('geo:drivers:busy', $lng, $lat, $driverId);
+ }
+ }
+ }
+
+ $pipe->execute();
+ $eventBuffer = []; // إفراغ المصفوفة بعد التنفيذ الناجح
+
+ } catch (\Exception $e) {
+ logMsg("⚠️ Redis Pipeline Error: " . $e->getMessage());
+ }
+ });
+
+ // 🌐 2. Internal HTTP Server — بورت 2021
+ $innerHttp = new Worker('http://0.0.0.0:2021');
+
+ $innerHttp->onMessage = function ($connection, $request) use ($io, $INTERNAL_KEY) {
+ global $active_orders_drivers, $connectedDrivers;
+
+ $headers = $request->header();
+ if (($headers['x-internal-key'] ?? '') !== $INTERNAL_KEY) {
+ $connection->send('Unauthorized');
+ return;
+ }
+
+ $post = $request->post();
+ $action = trim($post['action'] ?? '');
+ $redis = getRedis();
+
+ // ── 1. Dispatch Order ────────────────────────────────
+ if ($action === 'dispatch_order') {
+ $rideId = $post['ride_id'] ?? null;
+ $drivers = json_decode($post['drivers_ids'] ?? '[]', true);
+ $payload = $post['payload'] ?? [];
+ if (is_array($payload)) $payload = array_values($payload);
+
+ if ($rideId && !empty($drivers)) {
+ $active_orders_drivers[$rideId] = $drivers;
+ logMsg("🚀 Dispatch Ride #$rideId → " . count($drivers) . ' drivers.');
+ }
+
+ foreach ($drivers as $driverId) {
+ if (!isset($connectedDrivers[$driverId])) continue;
+ $io->to('driver_' . $driverId)->emit('new_ride_request', $payload);
+
+ $platform = $connectedDrivers[$driverId]['platform'] ?? 'android';
+ $token = $connectedDrivers[$driverId]['token'] ?? '';
+ if ($platform === 'ios' && !empty($token)) {
+ sendFCM_Async($token, 'طلب جديد', 'لديك رحلة جديدة قريبة منك', $payload);
+ }
+ }
+ $connection->send('Dispatched');
+
+ // ── 2. Market New Ride ────────────────────────────────
+ } elseif ($action === 'market_new_ride') {
+ $payload = $post['payload'] ?? [];
+ $rideId = $payload['id'] ?? null;
+ $lat = (float)($payload['start_lat'] ?? 0);
+ $lng = (float)($payload['start_lng'] ?? 0);
+ $endLat = isset($payload['end_lat']) ? (float)$payload['end_lat'] : null;
+ $endLng = isset($payload['end_lng']) ? (float)$payload['end_lng'] : null;
+
+ if (!$redis || !$rideId || $lat == 0 || $lng == 0) {
+ $connection->send('Error: Redis unavailable or invalid coords');
+ return;
+ }
+
+ $redis->geoadd('geo:rides:waiting', $lng, $lat, $rideId);
+ $nearbyDrivers = $redis->georadius('geo:drivers:available', $lng, $lat, 50, 'km');
+
+ $count = 0;
+ foreach ($nearbyDrivers as $driverId) {
+ if (isset($connectedDrivers[$driverId])) {
+ // Check if driver has a destination constraint in Redis
+ $profileKey = "driver:profile:$driverId";
+ $profile = $redis->hgetall($profileKey);
+ if ($profile && isset($profile['has_destination']) && $profile['has_destination'] == 1 && $endLat !== null && $endLng !== null) {
+ $driverDestLat = (float)($profile['destination_lat'] ?? 0);
+ $driverDestLng = (float)($profile['destination_lng'] ?? 0);
+
+ $destDistance = haversineDistance($endLat, $endLng, $driverDestLat, $driverDestLng);
+ // Filter out driver if destination is > 5km (5000 meters) away
+ if ($destDistance > 5000.0) {
+ continue;
+ }
+ }
+
+ $io->to('driver_' . $driverId)->emit('market_new_ride', $payload);
+ $count++;
+ }
+ }
+ logMsg("📢 Market Ride #$rideId → $count drivers.");
+ $connection->send("Broadcasted to $count drivers");
+
+ // ── 3. Get Nearby Ride IDs ────────────────────────────
+ } elseif ($action === 'get_nearby_ride_ids') {
+ $lat = (float)($post['lat'] ?? 0);
+ $lng = (float)($post['lng'] ?? 0);
+ $radius = (float)($post['radius'] ?? 9);
+
+ if (!$redis) { $connection->send(json_encode([])); return; }
+
+ $results = $redis->georadius(
+ 'geo:rides:waiting', $lng, $lat, $radius, 'km',
+ ['WITHDIST' => true, 'SORT' => 'ASC', 'COUNT' => 40]
+ );
+ $connection->send(json_encode($results));
+
+ // ── 4. Ride Taken ─────────────────────────────────────
+ } elseif ($action === 'ride_taken_event') {
+ $rideId = $post['ride_id'] ?? null;
+ $winnerDriverId = $post['taken_by_driver_id'] ?? null;
+
+ if (!$rideId) { $connection->send('Error: Missing ride_id'); return; }
+
+ if ($redis) $redis->zrem('geo:rides:waiting', $rideId);
+
+ $io->emit('ride_taken', [
+ 'ride_id' => $rideId,
+ 'taken_by_driver_id' => $winnerDriverId,
+ ]);
+
+ unset($active_orders_drivers[$rideId]);
+ logMsg("✅ Ride #$rideId taken by #$winnerDriverId.");
+ $connection->send('OK');
+
+ // ── 5. Force Disconnect ───────────────────────────────
+ } elseif ($action === 'force_disconnect') {
+ $driverId = $post['driver_id'] ?? null;
+
+ if ($driverId && isset($connectedDrivers[$driverId])) {
+ $connectedDrivers[$driverId]['conn']->disconnect();
+ unset($connectedDrivers[$driverId]);
+
+ if ($redis) {
+ $redis->zrem('geo:drivers:available', $driverId);
+ $redis->zrem('geo:drivers:busy', $driverId);
+ }
+ logMsg("🚫 Driver #$driverId force-disconnected.");
+ $connection->send('Disconnected');
+ } else {
+ $connection->send('Driver not connected');
+ }
+
+ // ── 6. Update Driver Destination ──────────────────────
+ } elseif ($action === 'update_driver_destination') {
+ $driverId = $post['driver_id'] ?? null;
+ $hasDest = isset($post['has_destination']) ? intval($post['has_destination']) : 0;
+
+ if (!$driverId || !$redis) {
+ $connection->send('Error: Missing driver_id or Redis unavailable');
+ return;
+ }
+
+ $profileKey = "driver:profile:$driverId";
+ if ($hasDest === 1) {
+ $destLat = $post['destination_lat'] ?? '';
+ $destLng = $post['destination_lng'] ?? '';
+ $destName = $post['destination_name'] ?? '';
+
+ $redis->hmset($profileKey, [
+ 'has_destination' => 1,
+ 'destination_lat' => $destLat,
+ 'destination_lng' => $destLng,
+ 'destination_name' => $destName
+ ]);
+ $redis->expire($profileKey, 86400); // 24 Hours
+ logMsg("🎯 Destination set for Driver #$driverId: $destName ($destLat, $destLng)");
+ } else {
+ $redis->hmset($profileKey, ['has_destination' => 0]);
+ $redis->hdel($profileKey, ['destination_lat', 'destination_lng', 'destination_name']);
+ logMsg("🎯 Destination cleared for Driver #$driverId");
+ }
+ $connection->send('OK');
+
+ } else {
+ $connection->send('Unknown action');
+ }
+ };
+
+ $innerHttp->listen();
+});
+
+// ============================================================
+// B. WebSocket Events للسائقين
+// ============================================================
+$io->on('connection', function ($socket) use ($INTERNAL_KEY) {
+ global $connectedDrivers, $driverState, $fwdThrottle, $eventBuffer;
+
+ $query = $socket->handshake['query'] ?? [];
+ $driverId = $query['driver_id'] ?? null;
+ $platform = $query['platform'] ?? 'android';
+ $token = $query['token'] ?? '';
+
+ if (!$driverId) {
+ $socket->disconnect();
+ return;
+ }
+
+ $socket->join('driver_' . $driverId);
+ $connectedDrivers[$driverId] = [
+ 'conn' => $socket,
+ 'platform' => $platform,
+ 'token' => $token,
+ ];
+
+ if (!isset($driverState[$driverId])) {
+ $driverState[$driverId] = [
+ 'lat' => 0.0,
+ 'lng' => 0.0,
+ 'speed' => -999.0,
+ 'heading' => -999.0,
+ 'status' => '',
+ 'expire_ts' => 0,
+ ];
+ }
+
+ logMsg("✅ Driver Connected: #$driverId ($platform)");
+
+ $socket->on('ping_alive', function () {
+ // Socket.IO handles pong automatically
+ });
+
+ $socket->on('update_location', function ($data)
+ use ($driverId, $INTERNAL_KEY, &$driverState, &$fwdThrottle, &$eventBuffer)
+ {
+ global $connectedDrivers;
+
+ $data = (array) $data;
+
+ $lat = isset($data['lat']) ? (float)$data['lat'] : null;
+ $lng = isset($data['lng']) ? (float)$data['lng'] : null;
+ $heading = (float)($data['heading'] ?? 0);
+ $speed = (float)($data['speed'] ?? 0);
+ $status = (string)($data['status'] ?? 'off');
+ $distance = (float)($data['distance'] ?? 0);
+ $passengerId = (string)($data['passenger_id'] ?? '');
+ $rideId = $data['ride_id'] ?? null;
+
+ if ($lat === null || $lng === null) return;
+
+ $state = &$driverState[$driverId];
+ $now = time();
+
+ // 1. Forward للراكب (ASYNC + throttle)
+ if (!empty($passengerId)) {
+ forwardLocationToPassengerSocket(
+ $driverId, $passengerId,
+ [
+ 'latitude' => $lat,
+ 'longitude' => $lng,
+ 'heading' => $heading,
+ 'speed' => $speed,
+ 'ride_id' => $rideId,
+ 'driver_id' => $driverId,
+ ],
+ $INTERNAL_KEY, $fwdThrottle
+ );
+ }
+
+ // 2. حساب ماذا تغيّر لتجنب ضغط Redis
+ $movedMeters = ($state['lat'] == 0.0 && $state['lng'] == 0.0)
+ ? 999.0
+ : haversineDistance($state['lat'], $state['lng'], $lat, $lng);
+
+ $didMove = $movedMeters >= MIN_MOVE_METERS;
+ $speedMs = $speed / 3.6;
+ $speedChanged = abs($speedMs - $state['speed']) >= HMSET_SPEED_DELTA;
+ $headingChanged = abs($heading - $state['heading']) >= HMSET_HEADING_DELTA;
+ $statusChanged = ($status !== $state['status']);
+
+ $needHmset = $speedChanged || $headingChanged || $statusChanged;
+ $needGeoadd = $didMove;
+ $needExpireRefresh = ($now - $state['expire_ts']) >= EXPIRE_REFRESH_SECONDS;
+
+ if (!$needHmset && (!$needGeoadd && !$statusChanged) && !$needExpireRefresh) {
+ return; // لم يتغير شيء مهم، تجاهل تماماً (0 عمليات Redis)
+ }
+
+ // 🚀 3. Buffering Event بدل الإرسال المباشر لـ Redis (Level 2 Magic)
+ if (!isset($eventBuffer[$driverId])) {
+ $eventBuffer[$driverId] = [];
+ }
+
+ if ($needHmset) {
+ $eventBuffer[$driverId]['hmset'] = [
+ 'id' => $driverId, 'heading' => $heading, 'speed' => $speed, 'status' => $status, 'updated_at' => $now
+ ];
+ $state['speed'] = $speedMs;
+ $state['heading'] = $heading;
+ }
+
+ if ($needExpireRefresh || $needHmset) {
+ $eventBuffer[$driverId]['expire'] = 900;
+ $state['expire_ts'] = $now;
+ }
+
+ if ($statusChanged) {
+ $eventBuffer[$driverId]['status_change'] = [
+ 'old' => $state['status'],
+ 'new' => $status
+ ];
+ $state['status'] = $status;
+
+ // Auto disconnect if blocked
+ if ($status === 'blocked') {
+ if (isset($connectedDrivers[$driverId])) {
+ $connectedDrivers[$driverId]['conn']->disconnect();
+ unset($connectedDrivers[$driverId]);
+ }
+ }
+ }
+
+ if ($needGeoadd || $statusChanged) {
+ $eventBuffer[$driverId]['geoadd'] = [
+ 'status' => $status,
+ 'lng' => $lng,
+ 'lat' => $lat
+ ];
+ if ($needGeoadd) {
+ $state['lat'] = $lat;
+ $state['lng'] = $lng;
+ }
+ }
+ });
+
+ $socket->on('disconnect', function () use ($driverId) {
+ global $connectedDrivers, $driverState, $fwdThrottle;
+
+ unset($connectedDrivers[$driverId]);
+ unset($driverState[$driverId]);
+ unset($fwdThrottle[$driverId]);
+
+ logMsg("❌ Driver Disconnected: #$driverId");
+ });
+});
+
+Worker::runAll();
\ No newline at end of file
diff --git a/loction_server/find_drivers_redis.php b/loction_server/find_drivers_redis.php
new file mode 100755
index 00000000..89d233ae
--- /dev/null
+++ b/loction_server/find_drivers_redis.php
@@ -0,0 +1,83 @@
+ false, 'message' => 'Missing coordinates']);
+ exit;
+}
+
+// 2. الاتصال بالريدز
+try {
+ $redis = new Client([
+ 'scheme' => 'tcp',
+ 'host' => '127.0.0.1','password' => $PASS_REDIS,
+ 'port' => 6379,
+ ]);
+ $redis->connect();
+} catch (Exception $e) {
+ echo json_encode(['status' => false, 'message' => 'Redis Error']);
+ exit;
+}
+
+// 3. البحث الجغرافي (السحر هنا) 🎩
+// يبحث عن السائقين المتاحين (available) فقط
+// التعديل: تفعيل WITHDIST و SORT كـ مفاتيح
+$driversGeo = $redis->georadius(
+ 'geo:drivers:available',
+ $lng,
+ $lat,
+ $radius,
+ 'km',
+ ['WITHDIST' => true,'WITHCOORD' => true, 'COUNT' => $limit, 'SORT' => 'ASC']
+);
+
+// النتيجة تكون مصفوفة: [ [driver_id, distance], ... ]
+
+$resultDrivers = [];
+
+// 4. جلب التفاصيل
+if (!empty($driversGeo)) {
+ foreach ($driversGeo as $item) {
+ $driverId = $item[0];
+ $distance = $item[1]; // المسافة بالكيلومتر
+ $d_coord= $item[2]; // [0=>lng, 1=>lat] 🔥 الإحداثيات هنا
+
+ // جلب البيانات الوصفية من الرام (Profile)
+ // هذه البيانات خزنها السوكيت قبل قليل
+ $profile = $redis->hgetall("driver:profile:$driverId");
+
+ // دمج البيانات
+ $resultDrivers[] = [
+ 'driver_id' => $driverId,
+ 'distance_km' => $distance,
+ 'heading' => $profile['heading'] ?? 0,
+ 'speed' => $profile['speed'] ?? 0,
+ 'status' => $profile['status'] ?? 'off',
+ 'lat' => $d_coord[1], // Latitude من الريدز (أدق)
+ 'lng' => $d_coord[0] // Longitude
+ // يمكنك هنا إضافة استعلام MySQL بسيط لجلب اسم السائق وصورته إذا لم تكن مخزنة في الريدز
+ // لكن للسرعة، سنكتفي بهذا الآن
+ ];
+ }
+}
+
+// 5. إرجاع النتيجة
+echo json_encode([
+ 'status' => true,
+ 'count' => count($resultDrivers),
+ 'drivers' => $resultDrivers
+]);
+?>
\ No newline at end of file
diff --git a/loction_server/index.php b/loction_server/index.php
new file mode 100755
index 00000000..66807395
--- /dev/null
+++ b/loction_server/index.php
@@ -0,0 +1,3 @@
+ OLD.latitude OR NEW.longitude <> OLD.longitude THEN
+SET NEW.location_point = ST_PointFromText(CONCAT('POINT(', NEW.longitude, ' ', NEW.latitude, ')'), 4326);
+END IF;
+END
+$$
+DELIMITER ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `car_tracks`
+--
+
+CREATE TABLE `car_tracks` (
+ `id` int NOT NULL,
+ `driver_id` varchar(100) NOT NULL,
+ `latitude` decimal(10,7) NOT NULL,
+ `longitude` decimal(10,7) NOT NULL,
+ `heading` float DEFAULT NULL,
+ `speed` float DEFAULT NULL,
+ `distance` float DEFAULT NULL,
+ `status` enum('on','off') DEFAULT 'off',
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `driver_behavior`
+--
+
+CREATE TABLE `driver_behavior` (
+ `id` int NOT NULL,
+ `driver_id` varchar(255) NOT NULL,
+ `trip_id` varchar(255) NOT NULL,
+ `max_speed` double DEFAULT '0',
+ `avg_speed` double DEFAULT '0',
+ `hard_brakes` int DEFAULT '0',
+ `total_distance` double DEFAULT '0',
+ `behavior_score` double DEFAULT '0',
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `driver_daily_summary`
+--
+
+CREATE TABLE `driver_daily_summary` (
+ `id` int NOT NULL,
+ `driver_id` varchar(33) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `date` date NOT NULL,
+ `total_seconds` int DEFAULT '0',
+ `last_updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `driver_daily_work`
+--
+
+CREATE TABLE `driver_daily_work` (
+ `driver_id` int NOT NULL,
+ `work_date` date NOT NULL,
+ `total_seconds` int NOT NULL DEFAULT '0',
+ `last_point_at` datetime DEFAULT NULL,
+ `last_status` enum('on','off') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'off',
+ `updated_at` datetime NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `driver_orders`
+--
+
+CREATE TABLE `driver_orders` (
+ `id` int NOT NULL,
+ `driver_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `order_id` varchar(99) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `notes` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'nothing',
+ `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `status` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'applied'
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `login_attempts`
+--
+
+CREATE TABLE `login_attempts` (
+ `id` int NOT NULL,
+ `ip_address` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `attempt_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `login_attempts_drivers`
+--
+
+CREATE TABLE `login_attempts_drivers` (
+ `id` int NOT NULL,
+ `ip_address` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `attempt_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `places`
+--
+
+CREATE TABLE `places` (
+ `id` int NOT NULL,
+ `latitude` double NOT NULL,
+ `longitude` double NOT NULL,
+ `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `name_ar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `name_en` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
+ `category` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
+ `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `server_locations`
+--
+
+CREATE TABLE `server_locations` (
+ `id` int NOT NULL,
+ `name` varchar(255) NOT NULL,
+ `min_latitude` decimal(10,6) NOT NULL,
+ `max_latitude` decimal(10,6) NOT NULL,
+ `min_longitude` decimal(10,6) NOT NULL,
+ `max_longitude` decimal(10,6) NOT NULL,
+ `server_link` varchar(255) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
+
+--
+-- Indexes for dumped tables
+--
+
+--
+-- Indexes for table `car_locations`
+--
+ALTER TABLE `car_locations`
+ ADD PRIMARY KEY (`driver_id`),
+ ADD KEY `idx_loc_status_time` (`status`,`updated_at`,`latitude`,`longitude`),
+ ADD SPATIAL KEY `idx_location_point` (`location_point`);
+
+--
+-- Indexes for table `car_tracks`
+--
+ALTER TABLE `car_tracks`
+ ADD PRIMARY KEY (`id`),
+ ADD KEY `idx_driver_time` (`driver_id`,`created_at`);
+
+--
+-- Indexes for table `driver_behavior`
+--
+ALTER TABLE `driver_behavior`
+ ADD PRIMARY KEY (`id`);
+
+--
+-- Indexes for table `driver_daily_summary`
+--
+ALTER TABLE `driver_daily_summary`
+ ADD PRIMARY KEY (`id`),
+ ADD UNIQUE KEY `unique_driver_date` (`driver_id`,`date`);
+
+--
+-- Indexes for table `driver_daily_work`
+--
+ALTER TABLE `driver_daily_work`
+ ADD PRIMARY KEY (`driver_id`,`work_date`),
+ ADD KEY `idx_driver_date` (`driver_id`,`work_date`);
+
+--
+-- Indexes for table `driver_orders`
+--
+ALTER TABLE `driver_orders`
+ ADD PRIMARY KEY (`id`);
+
+--
+-- Indexes for table `login_attempts`
+--
+ALTER TABLE `login_attempts`
+ ADD PRIMARY KEY (`id`);
+
+--
+-- Indexes for table `login_attempts_drivers`
+--
+ALTER TABLE `login_attempts_drivers`
+ ADD PRIMARY KEY (`id`);
+
+--
+-- Indexes for table `places`
+--
+ALTER TABLE `places`
+ ADD PRIMARY KEY (`id`);
+
+--
+-- Indexes for table `server_locations`
+--
+ALTER TABLE `server_locations`
+ ADD PRIMARY KEY (`id`),
+ ADD UNIQUE KEY `name` (`name`);
+
+--
+-- AUTO_INCREMENT for dumped tables
+--
+
+--
+-- AUTO_INCREMENT for table `car_tracks`
+--
+ALTER TABLE `car_tracks`
+ MODIFY `id` int NOT NULL AUTO_INCREMENT;
+
+--
+-- AUTO_INCREMENT for table `driver_behavior`
+--
+ALTER TABLE `driver_behavior`
+ MODIFY `id` int NOT NULL AUTO_INCREMENT;
+
+--
+-- AUTO_INCREMENT for table `driver_daily_summary`
+--
+ALTER TABLE `driver_daily_summary`
+ MODIFY `id` int NOT NULL AUTO_INCREMENT;
+
+--
+-- AUTO_INCREMENT for table `driver_orders`
+--
+ALTER TABLE `driver_orders`
+ MODIFY `id` int NOT NULL AUTO_INCREMENT;
+
+--
+-- AUTO_INCREMENT for table `login_attempts`
+--
+ALTER TABLE `login_attempts`
+ MODIFY `id` int NOT NULL AUTO_INCREMENT;
+
+--
+-- AUTO_INCREMENT for table `login_attempts_drivers`
+--
+ALTER TABLE `login_attempts_drivers`
+ MODIFY `id` int NOT NULL AUTO_INCREMENT;
+
+--
+-- AUTO_INCREMENT for table `places`
+--
+ALTER TABLE `places`
+ MODIFY `id` int NOT NULL AUTO_INCREMENT;
+
+--
+-- AUTO_INCREMENT for table `server_locations`
+--
+ALTER TABLE `server_locations`
+ MODIFY `id` int NOT NULL AUTO_INCREMENT;
+COMMIT;
+
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/loction_server/siro/connect.php b/loction_server/siro/connect.php
new file mode 100755
index 00000000..ad1d5684
--- /dev/null
+++ b/loction_server/siro/connect.php
@@ -0,0 +1,64 @@
+ false,
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
+ PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"
+ ];
+ $user = getenv('USER'); // Still used for DB connection
+ $pass = getenv('PASS'); // Still used for DB connection
+ $con = new PDO($dsn, $user, $pass, $options);
+//$con->exec("SET time_zone = '+03:00'");
+ // --- JWT Authentication ---
+ // include "encrypt_decrypt.php";
+ include "functions.php"; // Include the functions file
+
+
+ $decodedToken = authenticateJWT(); // Call the authentication function
+
+
+} catch (PDOException $e) {
+ error_log($e->getMessage());
+ http_response_code(500); // Internal Server Error
+ echo json_encode(['error' => 'A database error occurred.']);
+ exit;
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/functions.php b/loction_server/siro/functions.php
new file mode 100755
index 00000000..550775d0
--- /dev/null
+++ b/loction_server/siro/functions.php
@@ -0,0 +1,468 @@
+ 'update_driver_location',
+ 'passenger_id' => $passengerId,
+ 'payload' => $payload
+ ];
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_TIMEOUT_MS, 100);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-internal-key: $INTERNAL_KEY"]);
+ curl_exec($ch);
+ curl_close($ch);
+}
+
+// 2. استدعها داخل $socket->on('update_location'...)
+// يجب أن يرسل السائق passenger_id معه في الـ update_location أو تكون مخزنة في الـ session
+// $socket->on('update_location', function($data) use ($socket) {
+// ... كود الحفظ في الداتابيز ...
+//
+// if (!empty($data['passenger_id'])) {
+// forwardLocationToPassengerSocket($data['passenger_id'], $data);
+// }
+// });
+function authenticateJWT()
+{
+ $secretKey = trim(file_get_contents('/home/location/.secret_key')); // Access secret key (ensure it's set in .env)
+ if (!$secretKey) {
+ error_log("SECRET_KEY not set in environment variables.");
+ http_response_code(500); // Internal Server Error
+ echo json_encode(['error' => 'Internal server configuration error.']);
+ exit;
+ }
+
+
+ // 1. Get the JWT from the Authorization header
+ $authHeader = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
+ $token = null;
+
+ if (preg_match('/Bearer\s(\S+)/', $authHeader, $matches)) {
+ $token = $matches[1];
+ }
+
+ // 2. Check if the token exists
+ if (!$token) {
+ http_response_code(401); // Unauthorized
+ echo json_encode(['error' => 'Authorization token required']);
+ exit;
+ }
+
+ // 3. Verify the JWT
+ try {
+ $decoded = JWT::decode($token, new Key($secretKey, 'HS256'));
+
+ /* // 4. Validate claims (audience, issuer)
+ $decrypted_aud = $encryptionHelper->decryptData($decoded->aud);
+ $allowedAudiences = [getenv('allowed1'), getenv('allowed2'),getenv('allowedDriver1'),getenv('allowedDriver2'),
+ getenv('allowedService1'), getenv('allowedService2') ]; // "passenger", "driver"
+
+ if (!in_array($decrypted_aud, $allowedAudiences)) {
+ throw new Exception('Invalid audience');
+ error_log("[Debug] 'Invalid audience'");
+ }
+
+ $decrypted_iss = $encryptionHelper->decryptData($decoded->iss ?? '');
+ if ($decrypted_iss !== 'Tripz') {
+ throw new Exception('Invalid issuer');
+ error_log("[Debug] 'Invalid issuer'");
+ }
+*/
+ // 5. Authentication successful!
+ return $decoded; // Return the decoded payload
+
+ } catch (ExpiredException $e) {
+ http_response_code(401);
+ echo json_encode(['error' => 'Token expired']);
+ exit;
+ } catch (SignatureInvalidException $e) {
+ http_response_code(401);
+ echo json_encode(['error' => 'Invalid token signature']);
+ exit;
+ } catch (BeforeValidException $e) {
+ http_response_code(401);
+ echo json_encode(['error' => 'Token not yet valid']);
+ exit;
+ } catch (Exception $e) {
+ http_response_code(401);
+ echo json_encode(['error' => 'Invalid token: ' . $e->getMessage()]);
+ exit;
+ }
+}
+define("MB", 1048576);
+
+/**
+ * Send WhatsApp message using your server's API
+ *
+ * @param string $to The recipient phone number (e.g., 96279xxxxxxx)
+ * @param string $message The message to send
+ * @return mixed API response object or false on failure
+ */
+function sendWhatsAppFromServer($to, $message)
+{
+ // 1) قائمة السيرفرات المتاحة
+ $servers = [
+ "https://whatsapp.intaleq.xyz/send"
+ //,
+ //"https://bot3.intaleq.xyz/send"
+ ];
+
+ // 2) اختيار عشوائي
+ $url = $servers[array_rand($servers)];
+
+ // 3) إعداد البيانات
+ $payload = [
+ "to" => $to,
+ "message" => $message
+ ];
+
+ // 4) تنفيذ الطلب
+ $curl = curl_init();
+ curl_setopt_array($curl, [
+ CURLOPT_URL => $url,
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_CUSTOMREQUEST => "POST",
+ CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
+ CURLOPT_HTTPHEADER => [
+ "Content-Type: application/json"
+ ],
+ ]);
+
+ $response = curl_exec($curl);
+ $err = curl_error($curl);
+ curl_close($curl);
+
+ // 5) تسجيل النتيجة
+ if ($err) {
+ error_log("[sendWhatsAppFromServer] cURL Error on $url: $err");
+ return false;
+ }
+
+ return json_decode($response, true);
+}
+
+function debugLog($message) {
+ error_log($message);
+}
+
+function filterRequest($requestname, $type = 'string') {
+ if (isset($_POST[$requestname]) && !empty($_POST[$requestname])) {
+ $value = trim($_POST[$requestname]);
+ // Remove any control characters
+ $value = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/', '', $value);
+ // Remove any HTML or XML tags
+ $value = strip_tags($value);
+ // Escape any special characters
+ $value = htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+
+ if ($type === 'numeric') {
+ if (filter_var($value, FILTER_VALIDATE_FLOAT) !== false) {
+ return $value;
+ }
+ } else {
+ return $value;
+ }
+ }
+ return null;
+}
+
+
+function getAllData($table, $where = null, $values = null, $json = true)
+{
+ global $con;
+ $data = array();
+ if ($where == null) {
+ $stmt = $con->prepare("SELECT * FROM $table ");
+ } else {
+ $stmt = $con->prepare("SELECT * FROM $table WHERE $where ");
+ }
+ $stmt->execute($values);
+ $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
+ $count = $stmt->rowCount();
+ if ($json == true) {
+ if ($count > 0) {
+ echo json_encode(array("status" => "success","count" => $count, "data" => $data));
+ } else {
+ echo json_encode(array("status" => "failure"));
+ }
+ return $count;
+ } else {
+ if ($count > 0) {
+ return $data;
+ } else {
+ return json_encode(array("status" => "failure"));
+ }
+ }
+}
+
+function getData($table, $where = null, $values = null)
+{
+ global $con;
+ $data = array();
+ $stmt = $con->prepare("SELECT * FROM $table WHERE $where ");
+ $stmt->execute($values);
+ $data = $stmt->fetch(PDO::FETCH_ASSOC);
+ $count = $stmt->rowCount();
+ if ($count > 0) {
+ echo json_encode(array("status" => "success", "count" => $count, "data" => $data));
+ } else {
+ echo json_encode(array("status" => "failure"));
+ }
+ return $count;
+}
+
+
+
+
+function insertData($table, $data, $json = true)
+{
+ global $con;
+ foreach ($data as $field => $v)
+ $ins[] = ':' . $field;
+ $ins = implode(',', $ins);
+ $fields = implode(',', array_keys($data));
+ $sql = "INSERT INTO $table ($fields) VALUES ($ins)";
+
+ $stmt = $con->prepare($sql);
+ foreach ($data as $f => $v) {
+ $stmt->bindValue(':' . $f, $v);
+ }
+ $stmt->execute();
+ $count = $stmt->rowCount();
+ if ($json == true) {
+ if ($count > 0) {
+ echo json_encode(array("status" => "success"));
+ } else {
+ echo json_encode(array("status" => "failure"));
+ }
+ }
+ return $count;
+}
+
+
+function updateData($table, $data, $where, $json = true)
+{
+ global $con;
+ $cols = array();
+ $vals = array();
+
+ foreach ($data as $key => $val) {
+ $vals[] = "$val";
+ $cols[] = "`$key` = ? ";
+ }
+ $sql = "UPDATE $table SET " . implode(', ', $cols) . " WHERE $where";
+
+ $stmt = $con->prepare($sql);
+ $stmt->execute($vals);
+ $count = $stmt->rowCount();
+ if ($json == true) {
+ if ($count > 0) {
+ echo json_encode(array("status" => "success"));
+ } else {
+ echo json_encode(array("status" => "failure"));
+ }
+ }
+ return $count;
+}
+
+function deleteData($table, $where, $json = true)
+{
+ global $con;
+ $stmt = $con->prepare("DELETE FROM $table WHERE $where");
+ $stmt->execute();
+ $count = $stmt->rowCount();
+ if ($json == true) {
+ if ($count > 0) {
+ echo json_encode(array("status" => "success"));
+ } else {
+ echo json_encode(array("status" => "failure"));
+ }
+ }
+ return $count;
+}
+
+function imageUpload($imageRequest)
+{
+ global $msgError;
+ $imagename = rand(1000, 10000) . $_FILES[$imageRequest]['name'];
+ $imagetmp = $_FILES[$imageRequest]['tmp_name'];
+ $imagesize = $_FILES[$imageRequest]['size'];
+ $allowExt = array("jpg", "png", "gif", "mp3", "pdf");
+ $strToArray = explode(".", $imagename);
+ $ext = end($strToArray);
+ $ext = strtolower($ext);
+
+ if (!empty($imagename) && !in_array($ext, $allowExt)) {
+ $msgError = "EXT";
+ }
+ if ($imagesize > 2 * MB) {
+ $msgError = "size";
+ }
+ if (empty($msgError)) {
+ move_uploaded_file($imagetmp, "../upload/" . $imagename);
+ return $imagename;
+ } else {
+ return "fail";
+ }
+}
+
+
+
+function deleteFile($dir, $imagename)
+{
+ if (file_exists($dir . "/" . $imagename)) {
+ unlink($dir . "/" . $imagename);
+ }
+}
+
+// function checkAuthenticate()
+// {
+// if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
+// if ($_SERVER['PHP_AUTH_USER'] != "hamzaayedphp" || $_SERVER['PHP_AUTH_PW'] != "malDEV@2101") {
+// header('WWW-Authenticate: Basic realm="My Realm"');
+// header('HTTP/1.0 401 Unauthorized');
+// echo 'Unauthorized';
+// exit;
+// }
+// } else {
+// exit;
+// }
+
+// // End
+// }
+
+
+function checkAuthenticate($username, $password)
+{
+ if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
+ // Redirect to HTTPS
+ header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+ exit;
+ }
+
+ if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
+ if ($_SERVER['PHP_AUTH_USER'] !== $username || $_SERVER['PHP_AUTH_PW'] !== $password) {
+ header('WWW-Authenticate: Basic realm="My Realm"');
+ header('HTTP/1.0 401 Unauthorized');
+ echo 'Unauthorized';
+ exit;
+ }
+ } else {
+ header('WWW-Authenticate: Basic realm="My Realm"');
+ header('HTTP/1.0 401 Unauthorized');
+ echo 'Unauthorized';
+ exit;
+ }
+
+ // Continue with authenticated code
+}
+// function checkAuthenticate()
+// {
+// global $secretKey;
+
+// if (!isset($_SERVER['HTTP_AUTHORIZATION'])) {
+// header('HTTP/1.0 401 Unauthorized');
+// echo json_encode(['error' => 'Unauthorized']);
+// exit;
+// }
+
+// $authHeader = $_SERVER['HTTP_AUTHORIZATION'];
+// list($token) = sscanf($authHeader, 'Bearer %s');
+
+// if (!$token) {
+// header('HTTP/1.0 401 Unauthorized');
+// echo json_encode(['error' => 'Token not provided']);
+// exit;
+// }
+
+// try {
+// $decoded = JWT::decode($token, new Key($secretKey, 'HS256'));
+// return $decoded;
+// } catch (Exception $e) {
+// header('HTTP/1.0 401 Unauthorized');
+// echo json_encode(['error' => 'Invalid token']);
+// exit;
+// }
+// }
+
+function divideAndAddText($apiKey, $text) {
+ $parts = str_split($apiKey, strlen($apiKey) / 4);
+
+ $dividedApiKey = array();
+ $dividedApiKey['birinci'] = $parts[4] . $text;
+ $dividedApiKey['ikinci'] = $text . $parts[2] . $text;
+ $dividedApiKey['üçüncü'] = $text . $parts[1] . $text;
+ $dividedApiKey['dördüncü'] = $parts[0] . $text;
+ $dividedApiKey['beş'] = $text . $parts[3] . $text;
+
+ $concatenatedApiKey = implode('', $dividedApiKey);
+
+ return $concatenatedApiKey;
+}
+
+function retrieveOriginalApiKey($concatenatedApiKey, $text) {
+ $originalApiKey = str_replace($text, '', $concatenatedApiKey);
+
+ $resortedApiKey = array();
+ $resortedApiKey['birinci'] = $originalApiKey[strlen($originalApiKey) - 5] . $originalApiKey[strlen($originalApiKey) - 3];
+ $resortedApiKey['ikinci'] = $originalApiKey[strlen($originalApiKey) - 1] . $originalApiKey[strlen($originalApiKey) - 15];
+ $resortedApiKey['üçüncü'] = $originalApiKey[strlen($originalApiKey) - 9] . $originalApiKey[strlen($originalApiKey) - 12];
+ $resortedApiKey['dördüncü'] = $originalApiKey[strlen($originalApiKey) - 11] . $originalApiKey[strlen($originalApiKey) - 6];
+ $resortedApiKey['beş'] = $originalApiKey[strlen($originalApiKey) - 2] . $originalApiKey[strlen($originalApiKey) - 8];
+
+ return $resortedApiKey;
+}
+
+
+
+
+
+
+
+
+
+//////////
+
+function printFailure($message = "none")
+{
+ echo json_encode(array("status" => "failure", "message" => $message));
+}
+function printSuccess($message = "none")
+{
+ echo json_encode(array("status" => "success", "message" => $message));
+}
+
+function result($count)
+{
+ if ($count > 0) {
+ printSuccess();
+ } else {
+ printFailure();
+ }
+}
+
+function sendEmail($from,$to, $title, $body)
+{
+ $header = "From: $from" . "\n" . "CC: $from";
+ mail($to, $title, $body, $header);
+}
diff --git a/loction_server/siro/jwtconnect.php b/loction_server/siro/jwtconnect.php
new file mode 100755
index 00000000..d2f4fcc4
--- /dev/null
+++ b/loction_server/siro/jwtconnect.php
@@ -0,0 +1,64 @@
+ false,
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
+ PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"
+ ];
+ $user = getenv('USER'); // Still used for DB connection
+ $pass = getenv('PASS'); // Still used for DB connection
+ $con = new PDO($dsn, $user, $pass, $options);
+//$con->exec("SET time_zone = '+03:00'");
+ // --- JWT Authentication ---
+ // include "encrypt_decrypt.php";
+ include "functions.php"; // Include the functions file
+
+
+ // $decodedToken = authenticateJWT(); // Call the authentication function
+
+
+} catch (PDOException $e) {
+ error_log($e->getMessage());
+ http_response_code(500); // Internal Server Error
+ echo json_encode(['error' => 'A database error occurred.']);
+ exit;
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/load_env.php b/loction_server/siro/load_env.php
new file mode 100755
index 00000000..38c666ae
--- /dev/null
+++ b/loction_server/siro/load_env.php
@@ -0,0 +1,23 @@
+
+
+
+
+
+ تتبع السائقين - Tripz
+
+
+
+
+
+
+
+
+
+
+
نظام التتبع المباشر
+
+
+
+
+
+
+
+ الوضع:
+ مباشر
+
+
+ السائقين:
+ 0
+
+
+
جاري التحميل...
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/loction_server/siro/ride/heatmap.html b/loction_server/siro/ride/heatmap.html
new file mode 100755
index 00000000..70eba703
--- /dev/null
+++ b/loction_server/siro/ride/heatmap.html
@@ -0,0 +1,160 @@
+
+
+
+
+
+ خريطة الكثافة الحرارية (Grid Heatmap) - OpenStreetMap
+
+
+
+
+
+
+
+
+
+
تحليل كثافة الرحلات
+
هذه الخريطة تقسم المنطقة إلى مربعات جغرافية وتحسب عدد الرحلات في كل مربع.
+
+
طلبات عالية جداً (+5)
+
طلبات عالية (3-4)
+
طلبات متوسطة (2)
+
طلب واحد (1)
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/add.php b/loction_server/siro/ride/location/add.php
new file mode 100755
index 00000000..7e299b32
--- /dev/null
+++ b/loction_server/siro/ride/location/add.php
@@ -0,0 +1,80 @@
+ 99999999.99) { $dist = 99999999.99; }
+ if ($dist < -99999999.99){ $dist = -99999999.99; }
+
+ if (empty($driver_id) || ($lat == 0.0 && $lng == 0.0)) {
+ printFailure("Invalid payload");
+ exit;
+ }
+
+ // ---------------------------------------------------------
+ // التعديل الجوهري هنا:
+ // ---------------------------------------------------------
+ // تم حذف منطق حساب الوقت بواسطة PHP أو الهاتف.
+ // سنستخدم NOW() داخل جملة SQL مباشرة لضمان توقيت UTC موحد.
+
+ $sql = "INSERT INTO `car_tracks`
+ (`driver_id`,`latitude`,`longitude`,`heading`,`speed`,`distance`,`status`,`created_at`)
+ VALUES
+ (:driver_id, :latitude, :longitude, :heading, :speed, :distance, :status, NOW())";
+ // 👆 استخدمنا NOW() بدلاً من المتغير
+
+ $stmt = $con->prepare($sql);
+ $ok = $stmt->execute([
+ ':driver_id' => $driver_id,
+ ':latitude' => $lat,
+ ':longitude' => $lng,
+ ':heading' => $head,
+ ':speed' => $spd,
+ ':distance' => $dist,
+ ':status' => (string)($status ?? 'on'),
+ // ':created_at' => $created_at_to_use, // 👈 تم حذف هذا السطر لأنه لم يعد مطلوباً
+ ]);
+
+ if ($ok) {
+ printSuccess("car_tracks saved successfully");
+ } else {
+ printFailure("Failed to save car track");
+ }
+} catch (PDOException $e) {
+ // يفضل عدم طباعة تفاصيل الخطأ للمستخدم النهائي في الإنتاج، لكن لا بأس للـ Debug
+ error_log("car_tracks insert error: " . $e->getMessage());
+ printFailure("Database error");
+} catch (Throwable $e) {
+ error_log("car_tracks insert fatal: " . $e->getMessage());
+ printFailure("Server error");
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/add_batch.php b/loction_server/siro/ride/location/add_batch.php
new file mode 100755
index 00000000..4a4d107c
--- /dev/null
+++ b/loction_server/siro/ride/location/add_batch.php
@@ -0,0 +1,129 @@
+prepare("SELECT created_at FROM car_tracks WHERE driver_id = ? ORDER BY created_at DESC LIMIT 1");
+ $stmtLast->execute([$driver_id]);
+ $lastRow = $stmtLast->fetch(PDO::FETCH_ASSOC);
+
+ if ($lastRow) {
+ $last_db_time = strtotime($lastRow['created_at']);
+ $diff_from_db = $first_point_time - $last_db_time;
+
+ // إذا كان الفرق منطقياً (أقل من 5 دقائق) وموجباً، نحسبه
+ if ($diff_from_db > 0 && $diff_from_db < 300) {
+ $batch_added_seconds += $diff_from_db;
+ }
+ }
+
+ // ج. حساب الفروقات داخل الباتش نفسه
+ $prev_time = $first_point_time;
+
+ // نحدد تاريخ هذا الباتش (لنعرف أي يوم نحدث في الجدول اليومي)
+ $batch_date = date('Y-m-d', $first_point_time);
+
+ foreach ($points as $key => $point) {
+ if ($key === 0) continue; // تخطي النقطة الأولى لأننا قارناها مع الداتابيز
+
+ $current_time = strtotime($point['ts']);
+ $diff = $current_time - $prev_time;
+
+ // تجاهل القفزات الكبيرة (أكثر من 5 دقائق)
+ if ($diff > 0 && $diff < 300) {
+ $batch_added_seconds += $diff;
+ }
+ $prev_time = $current_time;
+ }
+
+ // ---------------------------------------------------------
+ // الجزء الثاني: إدخال التراكات (Bulk Insert) - كودك الأصلي
+ // ---------------------------------------------------------
+
+ $values = [];
+ $placeholders = [];
+
+ foreach ($points as $point) {
+ $lat = $point['lat'] ?? 0;
+ $lng = $point['lng'] ?? 0;
+ $spd = $point['spd'] ?? 0;
+ $head = $point['head'] ?? 0;
+ $dist = $point['dst'] ?? 0;
+ $stat = $point['st'] ?? 'off';
+ $time = $point['ts'] ?? date('Y-m-d H:i:s');
+
+ $placeholders[] = "(?, ?, ?, ?, ?, ?, ?, ?)";
+ array_push($values, $driver_id, $lat, $lng, $head, $spd, $dist, $stat, $time);
+ }
+
+ $sql = "INSERT INTO `car_tracks`
+ (`driver_id`, `latitude`, `longitude`, `heading`, `speed`, `distance`, `status`, `created_at`)
+ VALUES " . implode(', ', $placeholders);
+
+ $stmt = $con->prepare($sql);
+ $ok = $stmt->execute($values);
+
+ // ---------------------------------------------------------
+ // الجزء الثالث: تحديث جدول الملخص اليومي (The Smart Update)
+ // ---------------------------------------------------------
+
+ if ($ok && $batch_added_seconds > 0) {
+ // نستخدم ON DUPLICATE KEY UPDATE:
+ // إذا كان السائق موجوداً لهذا اليوم، أضف الثواني للرصيد الموجود
+ // إذا لم يكن موجوداً، أنشئ سجلاً جديداً
+
+ $sqlSummary = "INSERT INTO `driver_daily_summary` (`driver_id`, `date`, `total_seconds`)
+ VALUES (?, ?, ?)
+ ON DUPLICATE KEY UPDATE `total_seconds` = `total_seconds` + VALUES(`total_seconds`)";
+
+ $stmtSum = $con->prepare($sqlSummary);
+ $stmtSum->execute([$driver_id, $batch_date, $batch_added_seconds]);
+ }
+
+ if ($ok) {
+ echo json_encode(array(
+ "status" => "success",
+ "count" => count($points),
+ "added_seconds" => $batch_added_seconds // للتتبع فقط
+ ));
+ } else {
+ printFailure("Failed to insert batch");
+ }
+
+} catch (PDOException $e) {
+ error_log("Batch insert error: " . $e->getMessage());
+ printFailure("Database error");
+} catch (Throwable $e) {
+ printFailure("Server error");
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/addpassengerLocation.php b/loction_server/siro/ride/location/addpassengerLocation.php
new file mode 100755
index 00000000..b5ac8e0a
--- /dev/null
+++ b/loction_server/siro/ride/location/addpassengerLocation.php
@@ -0,0 +1,34 @@
+prepare($sql);
+
+// Bind the parameters to the SQL query
+$stmt->bindParam(':passengerId', $passengerId);
+$stmt->bindParam(':lat', $lat);
+$stmt->bindParam(':lng', $lng);
+$stmt->bindParam(':rideId', $rideId);
+
+// Execute the statement
+if ($stmt->execute()) {
+ // Print a success message
+ printSuccess("Passenger location saved successfully");
+} else {
+ // Print a failure message
+ printFailure("Failed to save passenger location");
+}
+?>
diff --git a/loction_server/siro/ride/location/delete.php b/loction_server/siro/ride/location/delete.php
new file mode 100644
index 00000000..b35886d6
--- /dev/null
+++ b/loction_server/siro/ride/location/delete.php
@@ -0,0 +1,20 @@
+
+
+include "../../connect.php";
+
+$driver_id = filterRequest("driver_id");
+
+$sql = "DELETE FROM `car_locations` WHERE `driver_id` = $driver_id";
+
+$stmt = $con->prepare($sql);
+$stmt->execute();
+
+if ($stmt->rowCount() > 0) {
+ // Print a success message
+ printSuccess($message = "Car location deleted successfully");
+} else {
+ // Print a failure message
+ printFailure($message = "Failed to delete car location");
+}
+
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/get.php b/loction_server/siro/ride/location/get.php
new file mode 100755
index 00000000..4e832760
--- /dev/null
+++ b/loction_server/siro/ride/location/get.php
@@ -0,0 +1,146 @@
+= NOW() - INTERVAL :freshSeconds SECOND
+ AND COALESCE(cr.year, 0) > 2000
+ AND (cr.make NOT LIKE '%دراج%' AND cr.model NOT LIKE '%دراج%')
+ ORDER BY cl.updated_at DESC, ratingDriver DESC
+ LIMIT 5
+ ";
+
+ $stmt = $con->prepare($sql);
+
+ // Bind the new bounding box parameter
+ $stmt->bindValue(':boundingBox', $boundingBoxWKT);
+ $stmt->bindValue(':freshSeconds', $freshSeconds, PDO::PARAM_INT);
+ $stmt->execute();
+
+ $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if (!$rows) {
+ printFailure("No car locations found");
+ exit;
+ }
+
+ // Decryption and age calculation logic remains the same
+ $fieldsToDecrypt = [
+ 'phone','email','gender','birthdate',
+ 'first_name','last_name','maritalStatus',
+ 'token','make','car_plate','vin'
+ ];
+
+ foreach ($rows as &$row) {
+ foreach ($fieldsToDecrypt as $field) {
+ if (isset($row[$field]) && $row[$field] !== null && $row[$field] !== '') {
+ try { $row[$field] = $encryptionHelper->decryptData($row[$field]); }
+ catch (Exception $e) { $row[$field] = null; }
+ }
+ }
+
+ if (!empty($row['birthdate'])) {
+ try {
+ $birthdate = new DateTime($row['birthdate']);
+ $today = new DateTime();
+ $row['age'] = $today->diff($birthdate)->y;
+ } catch (Exception $e) { $row['age'] = null; }
+ } else {
+ $row['age'] = null;
+ }
+
+ if (isset($row['serverNow'], $row['updated_at'])) {
+ error_log('PHP Now: '.date('Y-m-d H:i:s')
+ .' | MySQL Now: '.$row['serverNow']
+ .' | updated_at: '.$row['updated_at']);
+ }
+ }
+ unset($row);
+
+ printSuccess($rows);
+
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+} catch (Throwable $e) {
+ printFailure("Internal error: " . $e->getMessage());
+}
diff --git a/loction_server/siro/ride/location/getBalash.php b/loction_server/siro/ride/location/getBalash.php
new file mode 100755
index 00000000..48f16547
--- /dev/null
+++ b/loction_server/siro/ride/location/getBalash.php
@@ -0,0 +1,120 @@
+= NOW() - INTERVAL :freshSeconds SECOND
+ AND COALESCE(cr.year, 0) < 2000
+ AND (cr.make NOT LIKE '%دراج%' AND cr.model NOT LIKE '%دراج%')
+ ORDER BY
+ ratingDriver DESC, -- ⭐ الأولوية للتقييم
+ ratingCount DESC, -- ثم الأكثر حصولاً على تقييمات
+ cl.updated_at DESC -- ثم الأحدث تحديثًا كفاصل
+ LIMIT 5
+ ";
+
+ $stmt = $con->prepare($sql);
+ $stmt->bindValue(':southwestLat', $southwestLat);
+ $stmt->bindValue(':southwestLon', $southwestLon);
+ $stmt->bindValue(':northeastLat', $northeastLat);
+ $stmt->bindValue(':northeastLon', $northeastLon);
+ $stmt->bindValue(':freshSeconds', $freshSeconds, PDO::PARAM_INT);
+ $stmt->execute();
+
+ $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if (!$rows) {
+ printFailure("No car locations found");
+ exit;
+ }
+
+ // تفكيك التشفير + حساب العمر
+ $fieldsToDecrypt = [
+ 'phone','email','gender','birthdate',
+ 'first_name','last_name','maritalStatus',
+ 'token','make','car_plate','vin'
+ ];
+
+ foreach ($rows as &$row) {
+ foreach ($fieldsToDecrypt as $field) {
+ if (isset($row[$field]) && $row[$field] !== null && $row[$field] !== '') {
+ try { $row[$field] = $encryptionHelper->decryptData($row[$field]); }
+ catch (Exception $e) { $row[$field] = null; }
+ }
+ }
+
+ if (!empty($row['birthdate'])) {
+ try {
+ $birthDate = new DateTime($row['birthdate']);
+ $today = new DateTime();
+ $row['age'] = $today->diff($birthDate)->y;
+ } catch (Exception $e) {
+ $row['age'] = null;
+ }
+ } else {
+ $row['age'] = null;
+ }
+ }
+ unset($row);
+
+ printSuccess($rows);
+
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+} catch (Throwable $e) {
+ printFailure("Internal error: " . $e->getMessage());
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getComfort.php b/loction_server/siro/ride/location/getComfort.php
new file mode 100755
index 00000000..b751e91d
--- /dev/null
+++ b/loction_server/siro/ride/location/getComfort.php
@@ -0,0 +1,124 @@
+= NOW() - INTERVAL :freshSeconds SECOND
+ AND COALESCE(cr.year, 0) > 2017
+ AND (cr.make NOT LIKE '%دراج%' AND cr.model NOT LIKE '%دراج%')
+ ORDER BY
+ ratingDriver DESC, -- ⭐ الأولوية للأعلى تقييماً
+ ratingCount DESC, -- ثم الأكثر حصولاً على تقييمات
+ cl.updated_at DESC -- ثم الأحدث تحديثاً كفاصل
+ LIMIT 5
+ ";
+
+ $stmt = $con->prepare($sql);
+ $stmt->bindValue(':southwestLat', $southwestLat);
+ $stmt->bindValue(':southwestLon', $southwestLon);
+ $stmt->bindValue(':northeastLat', $northeastLat);
+ $stmt->bindValue(':northeastLon', $northeastLon);
+ $stmt->bindValue(':freshSeconds', $freshSeconds, PDO::PARAM_INT);
+ $stmt->execute();
+
+ $car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if ($car_locations) {
+ // ✅ فك التشفير (مع حماية الأخطاء)
+ $fieldsToDecrypt = [
+ 'phone','email','gender','birthdate',
+ 'first_name','last_name','maritalStatus',
+ 'token','make','car_plate','vin'
+ ];
+
+ foreach ($car_locations as &$row) {
+ foreach ($fieldsToDecrypt as $field) {
+ if (isset($row[$field]) && $row[$field] !== null && $row[$field] !== '') {
+ try {
+ $row[$field] = $encryptionHelper->decryptData($row[$field]);
+ } catch (Exception $e) {
+ $row[$field] = null; // تجاهل الفشل وأكمل
+ }
+ }
+ }
+
+ // ✅ حساب العمر بعد فك التشفير
+ if (!empty($row['birthdate'])) {
+ try {
+ $birthDate = new DateTime($row['birthdate']);
+ $today = new DateTime();
+ $row['age'] = $today->diff($birthDate)->y;
+ } catch (Exception $e) {
+ $row['age'] = null;
+ }
+ } else {
+ $row['age'] = null;
+ }
+ }
+ unset($row);
+
+ printSuccess($car_locations);
+ } else {
+ printFailure("No car locations found");
+ }
+
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+} catch (Throwable $e) {
+ printFailure("Internal error: " . $e->getMessage());
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getDelivery.php b/loction_server/siro/ride/location/getDelivery.php
new file mode 100755
index 00000000..62ba3395
--- /dev/null
+++ b/loction_server/siro/ride/location/getDelivery.php
@@ -0,0 +1,125 @@
+= NOW() - INTERVAL :freshSeconds SECOND
+ -- ⛓️ اختيار فقط الدراجات
+ AND (cr.make LIKE '%دراج%' OR cr.model LIKE '%دراج%')
+ ORDER BY
+ ratingDriver DESC, -- ⭐ أولاً الأعلى تقييماً
+ ratingCount DESC, -- ثم الأكثر حصولاً على تقييمات
+ cl.updated_at DESC -- ثم الأحدث تحديثاً كفاصل
+ LIMIT 10
+ ";
+
+ $stmt = $con->prepare($sql);
+ $stmt->bindValue(':southwestLat', $southwestLat);
+ $stmt->bindValue(':southwestLon', $southwestLon);
+ $stmt->bindValue(':northeastLat', $northeastLat);
+ $stmt->bindValue(':northeastLon', $northeastLon);
+ $stmt->bindValue(':freshSeconds', $freshSeconds, PDO::PARAM_INT);
+ $stmt->execute();
+
+ $car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if (!$car_locations) {
+ printFailure("No car locations found");
+ exit;
+ }
+
+ // ✅ فك التشفير (مع حماية الأخطاء)
+ $fieldsToDecrypt = [
+ 'phone','email','gender','birthdate',
+ 'first_name','last_name','maritalStatus',
+ 'token','make','car_plate','vin'
+ ];
+
+ foreach ($car_locations as &$row) {
+ foreach ($fieldsToDecrypt as $field) {
+ if (isset($row[$field]) && $row[$field] !== null && $row[$field] !== '') {
+ try {
+ $row[$field] = $encryptionHelper->decryptData($row[$field]);
+ } catch (Exception $e) {
+ $row[$field] = null; // تجاهل فشل فك التشفير
+ }
+ }
+ }
+
+ // ✅ حساب العمر بعد فك التشفير
+ if (!empty($row['birthdate'])) {
+ try {
+ $birthDate = new DateTime($row['birthdate']);
+ $today = new DateTime();
+ $row['age'] = $today->diff($birthDate)->y;
+ } catch (Exception $e) {
+ $row['age'] = null;
+ }
+ } else {
+ $row['age'] = null;
+ }
+ }
+ unset($row);
+
+ printSuccess($car_locations);
+
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+} catch (Throwable $e) {
+ printFailure("Internal error: " . $e->getMessage());
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getDrirversLocationsTrack.php b/loction_server/siro/ride/location/getDrirversLocationsTrack.php
new file mode 100755
index 00000000..4b1a6f18
--- /dev/null
+++ b/loction_server/siro/ride/location/getDrirversLocationsTrack.php
@@ -0,0 +1,70 @@
+ 'Unauthorized access']);
+ exit;
+}
+
+// 3. API Input (Optional days parameter, default 1)
+$days = isset($_GET['days']) ? (int)$_GET['days'] : 1;
+//if ($days < 1 || $days > 30) $days = 1;
+if ($days < 1 || $days > 10) $days = 1;
+
+
+// SQL
+$sql = "
+ SELECT *
+ FROM car_tracks
+ WHERE created_at >= NOW() - INTERVAL $days DAY
+ ORDER BY created_at DESC
+";
+
+try {
+ $stmt = $con->prepare($sql);
+ $stmt->execute();
+
+ // جلب كل النتائج دفعة واحدة
+ $records = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ echo json_encode([
+ 'success' => true,
+ 'total_records' => count($records),
+ 'from' => date('Y-m-d H:i:s', strtotime("-$days days")),
+ 'to' => date('Y-m-d H:i:s'),
+ 'data' => $records
+ ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+
+}
+catch (PDOException $e) {
+ http_response_code(500);
+ echo json_encode([
+ 'error' => 'Database error',
+ 'details' => $e->getMessage()
+ ]);
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getDriverCarsLocationToPassengerAfterApplied.php b/loction_server/siro/ride/location/getDriverCarsLocationToPassengerAfterApplied.php
new file mode 100644
index 00000000..60566c5c
--- /dev/null
+++ b/loction_server/siro/ride/location/getDriverCarsLocationToPassengerAfterApplied.php
@@ -0,0 +1,43 @@
+prepare($sql);
+$stmt->execute();
+$car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+if ($car_locations) {
+ // Print the car location data as JSON
+ printSuccess($data = $car_locations);
+} else {
+ // Print a failure message
+ printFailure($message = "No car locations found");
+}
+
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getElectric.php b/loction_server/siro/ride/location/getElectric.php
new file mode 100755
index 00000000..2dfba9c8
--- /dev/null
+++ b/loction_server/siro/ride/location/getElectric.php
@@ -0,0 +1,126 @@
+= NOW() - INTERVAL :freshSeconds SECOND
+ AND (cr.make NOT LIKE '%دراج%' AND cr.model NOT LIKE '%دراج%')
+ AND cr.fuel = 'كهربائي'
+ ORDER BY
+ ratingDriver DESC, -- ⭐ الأعلى تقييماً
+ ratingCount DESC, -- ثم الأكثر حصولاً على تقييمات
+ cl.updated_at DESC -- ثم الأحدث تحديثاً
+ LIMIT 10
+ ";
+
+ $stmt = $con->prepare($sql);
+ $stmt->bindValue(':southwestLat', $southwestLat);
+ $stmt->bindValue(':southwestLon', $southwestLon);
+ $stmt->bindValue(':northeastLat', $northeastLat);
+ $stmt->bindValue(':northeastLon', $northeastLon);
+ $stmt->bindValue(':freshSeconds', $freshSeconds, PDO::PARAM_INT);
+ $stmt->execute();
+
+ $car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if (!$car_locations) {
+ printFailure("No electric car locations found");
+ exit;
+ }
+
+ // ✅ فك التشفير + حساب العمر
+ $fieldsToDecrypt = [
+ 'phone','email','gender','birthdate',
+ 'first_name','last_name','maritalStatus',
+ 'token','make','car_plate','vin'
+ ];
+
+ foreach ($car_locations as &$row) {
+ foreach ($fieldsToDecrypt as $field) {
+ if (isset($row[$field]) && $row[$field] !== null && $row[$field] !== '') {
+ try {
+ $row[$field] = $encryptionHelper->decryptData($row[$field]);
+ } catch (Exception $e) {
+ $row[$field] = null; // تجاهل أي خطأ بفك التشفير
+ }
+ }
+ }
+
+ // حساب العمر
+ if (!empty($row['birthdate'])) {
+ try {
+ $birthDate = new DateTime($row['birthdate']);
+ $today = new DateTime();
+ $row['age'] = $today->diff($birthDate)->y;
+ } catch (Exception $e) {
+ $row['age'] = null;
+ }
+ } else {
+ $row['age'] = null;
+ }
+ }
+ unset($row);
+
+ printSuccess($car_locations);
+
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+} catch (Throwable $e) {
+ printFailure("Internal error: " . $e->getMessage());
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getFemalDriver.php b/loction_server/siro/ride/location/getFemalDriver.php
new file mode 100755
index 00000000..5d60156c
--- /dev/null
+++ b/loction_server/siro/ride/location/getFemalDriver.php
@@ -0,0 +1,111 @@
+= NOW() - INTERVAL 180 SECOND
+ AND (cr.make NOT LIKE '%دراجة%' AND cr.model NOT LIKE '%دراجة%')
+ AND d.gender = 'Female'
+ GROUP BY cl.driver_id
+ ORDER BY ratingDriver DESC, ratingCount DESC, cl.updated_at DESC
+ LIMIT 10;
+ ";
+
+ $stmt = $con->prepare($sql);
+ $stmt->bindParam(':southwestLat', $southwestLat);
+ $stmt->bindParam(':southwestLon', $southwestLon);
+ $stmt->bindParam(':northeastLat', $northeastLat);
+ $stmt->bindParam(':northeastLon', $northeastLon);
+ $stmt->execute();
+
+ $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if ($rows) {
+ $fieldsToDecrypt = [
+ 'phone','email','gender','birthdate',
+ 'first_name','last_name','token',
+ 'make','car_plate','vin','maritalStatus'
+ ];
+
+ foreach ($rows as &$row) {
+ foreach ($fieldsToDecrypt as $field) {
+ if (isset($row[$field]) && $row[$field] !== null && $row[$field] !== '') {
+ try {
+ $row[$field] = $encryptionHelper->decryptData($row[$field]);
+ } catch (Exception $e) {
+ $row[$field] = null;
+ }
+ }
+ }
+
+ // حساب العمر
+ if (!empty($row['birthdate'])) {
+ try {
+ $birthDate = new DateTime($row['birthdate']);
+ $today = new DateTime();
+ $row['age'] = $today->diff($birthDate)->y;
+ } catch (Exception $e) {
+ $row['age'] = null;
+ }
+ } else {
+ $row['age'] = null;
+ }
+ }
+ unset($row);
+
+ printSuccess($rows);
+ } else {
+ printFailure("No car locations found");
+ }
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+} catch (Throwable $e) {
+ printFailure("Internal error: " . $e->getMessage());
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getLatestLocationPassenger.php b/loction_server/siro/ride/location/getLatestLocationPassenger.php
new file mode 100644
index 00000000..25279f54
--- /dev/null
+++ b/loction_server/siro/ride/location/getLatestLocationPassenger.php
@@ -0,0 +1,29 @@
+prepare($sql);
+$stmt->execute();
+$car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+if ($car_locations) {
+ // Print the car location data as JSON
+ printSuccess($data = $car_locations);
+} else {
+ // Print a failure message
+ printFailure($message = "No car locations found");
+}
+
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getLocationParents.php b/loction_server/siro/ride/location/getLocationParents.php
new file mode 100644
index 00000000..95f883c9
--- /dev/null
+++ b/loction_server/siro/ride/location/getLocationParents.php
@@ -0,0 +1,42 @@
+prepare($sql);
+$stmt->execute();
+$car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+if ($car_locations) {
+ // Print the car location data as JSON
+ printSuccess($data = $car_locations);
+} else {
+ // Print a failure message
+ printFailure($message = "No car locations found");
+}
+
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getPinkBike.php b/loction_server/siro/ride/location/getPinkBike.php
new file mode 100755
index 00000000..e1b52eed
--- /dev/null
+++ b/loction_server/siro/ride/location/getPinkBike.php
@@ -0,0 +1,112 @@
+= NOW() - INTERVAL 5 SECOND
+ AND (cr.make LIKE '%دراجة%' OR cr.model LIKE '%دراجة%')
+ GROUP BY cl.driver_id
+ ORDER BY ratingDriver DESC, cl.updated_at DESC
+ LIMIT 10;
+ ";
+
+ $stmt = $con->prepare($sql);
+ $stmt->bindParam(':southwestLat', $southwestLat);
+ $stmt->bindParam(':southwestLon', $southwestLon);
+ $stmt->bindParam(':northeastLat', $northeastLat);
+ $stmt->bindParam(':northeastLon', $northeastLon);
+ $stmt->execute();
+
+ $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if ($rows) {
+ $fieldsToDecrypt = [
+ 'phone', 'email', 'gender', 'birthdate',
+ 'first_name', 'last_name', 'maritalStatus', 'token',
+ 'make', 'car_plate', 'vin'
+ ];
+
+ $filteredRows = [];
+
+ foreach ($rows as &$row) {
+ foreach ($fieldsToDecrypt as $field) {
+ if (isset($row[$field])) {
+ $row[$field] = $encryptionHelper->decryptData($row[$field]);
+ }
+ }
+
+ // فلترة حسب الجنس
+ if (strtolower($row['gender']) !== 'female') {
+ continue;
+ }
+
+ // حساب العمر
+ if (!empty($row['birthdate'])) {
+ $birthDate = new DateTime($row['birthdate']);
+ $today = new DateTime();
+ $row['age'] = $today->diff($birthDate)->y;
+ } else {
+ $row['age'] = null;
+ }
+
+ $filteredRows[] = $row;
+ }
+
+ printSuccess($filteredRows);
+ } else {
+ printFailure("No car locations found");
+ }
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getRidesDriverByDay.php b/loction_server/siro/ride/location/getRidesDriverByDay.php
new file mode 100755
index 00000000..5dccdb65
--- /dev/null
+++ b/loction_server/siro/ride/location/getRidesDriverByDay.php
@@ -0,0 +1,66 @@
+= :first_day_total AND `ride`.created_at < :last_day_total AND `ride`.`status` = 'Finished'
+ ) AS totalPrice,
+ (
+ SELECT
+ COUNT(`ride`.`id`)
+ FROM
+ `ride`
+ WHERE
+ `ride`.`driver_id` = :driver_id_count AND `ride`.`created_at` >= :first_day_count AND `ride`.created_at < :last_day_count AND `ride`.`status` = 'Finished'
+ ) AS totalCount
+FROM
+ `ride`
+WHERE
+ `ride`.`driver_id` = :driver_id_main AND `ride`.`created_at` >= :first_day_main AND `ride`.created_at < :last_day_main AND `ride`.`status` = 'Finished'
+GROUP BY
+ day
+ORDER BY
+ day ASC;";
+
+$stmt = $con->prepare($sql);
+
+// Bind each parameter uniquely
+$stmt->bindParam(':driver_id_total', $driver_id, PDO::PARAM_STR);
+$stmt->bindParam(':first_day_total', $first_day_of_month, PDO::PARAM_STR);
+$stmt->bindParam(':last_day_total', $last_day_of_month, PDO::PARAM_STR);
+
+$stmt->bindParam(':driver_id_count', $driver_id, PDO::PARAM_STR);
+$stmt->bindParam(':first_day_count', $first_day_of_month, PDO::PARAM_STR);
+$stmt->bindParam(':last_day_count', $last_day_of_month, PDO::PARAM_STR);
+
+$stmt->bindParam(':driver_id_main', $driver_id, PDO::PARAM_STR);
+$stmt->bindParam(':first_day_main', $first_day_of_month, PDO::PARAM_STR);
+$stmt->bindParam(':last_day_main', $last_day_of_month, PDO::PARAM_STR);
+
+$stmt->execute();
+
+$car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+if ($car_locations) {
+ // Print the car location data as JSON
+ printSuccess($data = $car_locations);
+} else {
+ // Print a failure message
+ printFailure($message = "No car locations found");
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getSpeed.php b/loction_server/siro/ride/location/getSpeed.php
new file mode 100755
index 00000000..3c42ff93
--- /dev/null
+++ b/loction_server/siro/ride/location/getSpeed.php
@@ -0,0 +1,119 @@
+ 'failure', 'message' => 'Missing required parameters']);
+ exit;
+}
+
+try {
+ // نافذة زمنية مناسبة (3 دقائق)
+ $freshSeconds = 180;
+
+ $sql = "
+ SELECT
+ cl.driver_id,
+ cl.latitude,
+ cl.longitude,
+ cl.heading,
+ cl.speed,
+ cl.status,
+ cl.created_at,
+ cl.updated_at,
+ d.phone,
+ d.email,
+ d.birthdate,
+ d.first_name,
+ d.last_name,
+ d.gender,
+ d.maritalStatus,
+ cr.make,
+ cr.car_plate,
+ cr.model,
+ cr.color,
+ cr.vin,
+ cr.color_hex,
+ cr.year,
+ dt.token,
+ COALESCE(rd.ratingDriver, 0) AS ratingDriver,
+ COALESCE(rd.ratingCount, 0) AS ratingCount
+ FROM car_locations cl
+ LEFT JOIN driver d ON d.id = cl.driver_id
+ LEFT JOIN CarRegistration cr ON cr.driverID = cl.driver_id
+ LEFT JOIN driverToken dt ON dt.captain_id = cl.driver_id
+ LEFT JOIN (
+ SELECT driver_id, AVG(rating) AS ratingDriver, COUNT(id) AS ratingCount
+ FROM ratingDriver
+ GROUP BY driver_id
+ ) rd ON rd.driver_id = cl.driver_id
+ WHERE
+ cl.latitude BETWEEN :southwestLat AND :northeastLat
+ AND cl.longitude BETWEEN :southwestLon AND :northeastLon
+ AND cl.status = 'off'
+ AND cl.updated_at >= NOW() - INTERVAL :freshSeconds SECOND
+ AND COALESCE(cr.year, 0) > 2000
+ AND (cr.make NOT LIKE '%دراج%' AND cr.model NOT LIKE '%دراج%')
+ ORDER BY
+ ratingDriver DESC,
+ ratingCount DESC,
+ cl.updated_at DESC
+ LIMIT 10;
+ ";
+
+ $stmt = $con->prepare($sql);
+ $stmt->bindParam(':southwestLat', $southwestLat);
+ $stmt->bindParam(':southwestLon', $southwestLon);
+ $stmt->bindParam(':northeastLat', $northeastLat);
+ $stmt->bindParam(':northeastLon', $northeastLon);
+ $stmt->bindValue(':freshSeconds', $freshSeconds, PDO::PARAM_INT);
+ $stmt->execute();
+
+ $car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if ($car_locations) {
+ $fieldsToDecrypt = [
+ 'phone','email','gender','birthdate',
+ 'first_name','last_name','token',
+ 'make','car_plate','vin','maritalStatus'
+ ];
+
+ foreach ($car_locations as &$row) {
+ foreach ($fieldsToDecrypt as $field) {
+ if (isset($row[$field]) && $row[$field] !== null && $row[$field] !== '') {
+ try {
+ $row[$field] = $encryptionHelper->decryptData($row[$field]);
+ } catch (Exception $e) {
+ $row[$field] = null;
+ }
+ }
+ }
+
+ // ✅ احسب العمر
+ if (!empty($row['birthdate'])) {
+ try {
+ $birthdate = new DateTime($row['birthdate']);
+ $now = new DateTime();
+ $row['age'] = $now->diff($birthdate)->y;
+ } catch (Exception $e) {
+ $row['age'] = null;
+ }
+ } else {
+ $row['age'] = null;
+ }
+ }
+ unset($row);
+
+ printSuccess($car_locations);
+ } else {
+ printFailure("No car locations found");
+ }
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getTotalDriverDuration.php b/loction_server/siro/ride/location/getTotalDriverDuration.php
new file mode 100755
index 00000000..bacc9c94
--- /dev/null
+++ b/loction_server/siro/ride/location/getTotalDriverDuration.php
@@ -0,0 +1,44 @@
+= :first_day_of_month
+ AND car_tracks.created_at < :last_day_of_month
+GROUP BY
+ day
+ORDER BY
+ day ASC;";
+
+$stmt = $con->prepare($sql);
+$stmt->bindParam(':driver_id', $driver_id, PDO::PARAM_STR);
+$stmt->bindParam(':first_day_of_month', $first_day_of_month, PDO::PARAM_STR);
+$stmt->bindParam(':last_day_of_month', $last_day_of_month, PDO::PARAM_STR);
+$stmt->execute();
+
+$car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+if ($car_locations) {
+ // Print the car location data as JSON
+ printSuccess($data = $car_locations);
+} else {
+ // Print a failure message
+ printFailure($message = "No car locations found");
+}
+
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getTotalDriverDurationToday.php b/loction_server/siro/ride/location/getTotalDriverDurationToday.php
new file mode 100755
index 00000000..2baa5775
--- /dev/null
+++ b/loction_server/siro/ride/location/getTotalDriverDurationToday.php
@@ -0,0 +1,70 @@
+ "failure", "message" => "Connect file not found")));
+}
+
+// 3. التقاط البيانات بذكاء (لحل مشكلة Flutter JSON)
+// هذا الجزء يفحص: هل البيانات في POST؟ أم في JSON Body؟
+$driver_id = null;
+
+if (isset($_POST['driver_id'])) {
+ $driver_id = filterRequest("driver_id");
+} else {
+ // محاولة قراءة JSON Body (لأن فلاتر يرسل البيانات هكذا غالباً)
+ $jsonInput = json_decode(file_get_contents("php://input"), true);
+ if (isset($jsonInput['driver_id'])) {
+ $driver_id = htmlspecialchars(strip_tags($jsonInput['driver_id']));
+ }
+}
+
+// التحقق النهائي
+if (!$driver_id) {
+ // طباعة الخطأ بوضوح
+ echo json_encode(array("status" => "failure", "message" => "driver_id is missing or empty"));
+ exit;
+}
+
+// 4. التنفيذ
+try {
+ $date = date('Y-m-d');
+
+ $sql = "SELECT total_seconds FROM driver_daily_summary
+ WHERE driver_id = ? AND date = ?";
+
+ $stmt = $con->prepare($sql);
+ $stmt->execute([$driver_id, $date]);
+ $data = $stmt->fetch(PDO::FETCH_ASSOC);
+
+ $duration = "00:00:00";
+ if ($data) {
+ $seconds = $data['total_seconds'];
+ $duration = gmdate("H:i:s", $seconds);
+ }
+
+ // 5. بناء الاستجابة يدوياً لتطابق كود Flutter 100%
+ // الهيكل المطلوب: data['message'][0]['total_duration']
+ $response = array(
+ "status" => "success",
+ "message" => array(
+ array("total_duration" => $duration)
+ )
+ );
+
+ echo json_encode($response);
+
+} catch (PDOException $e) {
+ echo json_encode(array("status" => "failure", "message" => "DB Error: " . $e->getMessage()));
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/get_location_area_links.php b/loction_server/siro/ride/location/get_location_area_links.php
new file mode 100644
index 00000000..5bcdf5c0
--- /dev/null
+++ b/loction_server/siro/ride/location/get_location_area_links.php
@@ -0,0 +1,24 @@
+prepare($sql);
+
+ $stmt->execute();
+
+ $car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if ($car_locations) {
+ printSuccess($car_locations);
+ } else {
+ printFailure("No car locations found");
+ }
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/getfemalbehavior.php b/loction_server/siro/ride/location/getfemalbehavior.php
new file mode 100644
index 00000000..2e343bba
--- /dev/null
+++ b/loction_server/siro/ride/location/getfemalbehavior.php
@@ -0,0 +1,86 @@
+= :southwestLat AND cl.latitude <= :northeastLat
+ AND cl.longitude >= :southwestLon AND cl.longitude <= :northeastLon
+ AND cl.status = 'off'
+ AND cl.updated_at >= NOW() - INTERVAL 5 SECOND
+ AND (cr.make NOT LIKE '%دراجة%' OR cr.model NOT LIKE '%دراجة%')
+ AND d.gender = 'Female'
+GROUP BY cl.driver_id
+ORDER BY ratingDriver DESC, cl.updated_at DESC
+LIMIT 10;
+";
+
+ $stmt = $con->prepare($sql);
+ $stmt->bindParam(':southwestLat', $southwestLat);
+ $stmt->bindParam(':southwestLon', $southwestLon);
+ $stmt->bindParam(':northeastLat', $northeastLat);
+ $stmt->bindParam(':northeastLon', $northeastLon);
+
+ $stmt->execute();
+ $car_locations = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ if ($car_locations) {
+ printSuccess($car_locations);
+ } else {
+ printFailure("No car locations found");
+ }
+} catch (PDOException $e) {
+ printFailure("Database error: " . $e->getMessage());
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/save_behavior.php b/loction_server/siro/ride/location/save_behavior.php
new file mode 100644
index 00000000..92239ddc
--- /dev/null
+++ b/loction_server/siro/ride/location/save_behavior.php
@@ -0,0 +1,59 @@
+prepare("
+ INSERT INTO driver_behavior (
+ driver_id, trip_id, max_speed, avg_speed,
+ hard_brakes, total_distance, behavior_score
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)
+ ");
+
+ $stmt->execute([
+ $driver_id,
+ $trip_id,
+ $max_speed,
+ $avg_speed,
+ $hard_brakes,
+ $total_distance,
+ $behavior_score
+ ]);
+
+ // التحقق من نجاح العملية
+ if ($stmt->rowCount() > 0) {
+ printSuccess("Behavior data saved");
+ } else {
+ // Log that the query ran but no rows were inserted
+ error_log("Driver Behavior Warning: Insert executed but 0 rows affected for driver $driver_id");
+ printFailure("Failed to save data");
+ }
+
+} catch (PDOException $e) {
+ // --- THIS IS THE TYPE ERROR LOG YOU ASKED FOR ---
+ // This records the exact SQL error (e.g., duplicate entry, foreign key fail) to your server log
+ error_log("Driver Behavior SQL Error: " . $e->getMessage());
+
+ // Return a generic error to the app (or $e->getMessage() if debugging)
+ printFailure("Database Error");
+}
+
+exit();
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/update.php b/loction_server/siro/ride/location/update.php
new file mode 100644
index 00000000..733cc2fe
--- /dev/null
+++ b/loction_server/siro/ride/location/update.php
@@ -0,0 +1,65 @@
+prepare($sql);
+
+ // The execute method returns true on success and false on failure.
+ $success = $stmt->execute([
+ ':latitude' => $latitude,
+ ':longitude' => $longitude,
+ ':heading' => $heading,
+ ':speed' => $speed,
+ ':distance' => $distance,
+ ':status' => $status,
+ // ':updated_at' => $updated_at, <-- قمنا بحذف هذا السطر من المصفوفة لأنه لم يعد موجوداً في الاستعلام
+ ':driver_id' => $driver_id
+ ]);
+
+ if ($success) {
+ printSuccess("Car location updated successfully");
+ } else {
+ printFailure("Failed to update car location");
+ }
+
+} catch (PDOException $e) {
+ http_response_code(500);
+ printFailure('Database error occurred');
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/location/update_location.php b/loction_server/siro/ride/location/update_location.php
new file mode 100755
index 00000000..3525d885
--- /dev/null
+++ b/loction_server/siro/ride/location/update_location.php
@@ -0,0 +1,48 @@
+prepare($sql);
+ $stmt->execute([
+ ':id' => $driver_id,
+ ':lat' => $lat,
+ ':lng' => $lng,
+ ':head' => $heading,
+ ':spd' => $speed,
+ ':stat' => $status
+ ]);
+
+ // ملاحظة: لا نحتاج لإرسال socket notification هنا لأن هذا يحدث كل ثانية
+ // الراكب يرى التحديث لأنه متصل بسوكيت اللوكيشن ويستمع لحدث 'update_driver_location'
+
+ printSuccess("Location Updated");
+
+} catch (PDOException $e) {
+ printFailure("DB Error: " . $e->getMessage());
+}
+?>
\ No newline at end of file
diff --git a/loction_server/siro/ride/locations_data.json b/loction_server/siro/ride/locations_data.json
new file mode 100755
index 00000000..fc12da86
--- /dev/null
+++ b/loction_server/siro/ride/locations_data.json
@@ -0,0 +1 @@
+{"last_updated":"2025-11-24 10:08:44","count":89,"drivers":[{"driver_id":"05409309e47b32838ad5","latitude":"34.8712830","longitude":"35.9064440","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-19 18:05:50","updated_at":"2025-11-24 09:41:17","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?G?3?oA@??c[\u0006?A@"},{"driver_id":"1031b1b342a9a9e20b95","latitude":"31.7171130","longitude":"35.9993760","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-13 09:40:09","updated_at":"2025-11-24 07:54:56","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000U??????@\"4????A@"},{"driver_id":"1376afac594c3f2ae601","latitude":"36.0850790","longitude":"36.7140810","heading":"30.00","speed":66.3,"distance":"0.25","status":"off","carType":"Awfar","created_at":"2025-11-23 10:00:05","updated_at":"2025-11-24 09:59:49","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?Ia??\nB@?ؖ\u0001g[B@"},{"driver_id":"19c29d0f68c11a010f1e","latitude":"33.4786240","longitude":"36.3574540","heading":"93.30","speed":0,"distance":"4.05","status":"off","carType":"Awfar","created_at":"2025-11-20 12:57:27","updated_at":"2025-11-24 10:06:40","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000U?\u001d?C?@@??{\r?-B@"},{"driver_id":"1a1c5eb405a4932015cd","latitude":"33.4873460","longitude":"36.3786980","heading":"255.70","speed":0,"distance":"0.11","status":"off","carType":"Awfar","created_at":"2025-11-19 16:49:05","updated_at":"2025-11-24 09:07:13","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0010?Za?@@\u0012-y0B@"},{"driver_id":"1ef1491da9d9c1b6dd9f","latitude":"33.5250490","longitude":"36.2736880","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-19 08:46:30","updated_at":"2025-11-24 09:43:34","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0015?=?4?@@a?X5\b#B@"},{"driver_id":"1ef563908f031c999ac3","latitude":"33.6937270","longitude":"36.3753600","heading":"231.30","speed":1.779,"distance":"16.61","status":"off","carType":"Awfar","created_at":"2025-11-07 14:54:23","updated_at":"2025-11-24 09:50:04","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0015??\u000b??@@\u0000\u001d??\u000b0B@"},{"driver_id":"205d370a2776373bb4dc","latitude":"31.7170990","longitude":"35.9993670","heading":"0.00","speed":0,"distance":"215.31","status":"off","carType":"Awfar","created_at":"2025-11-15 13:41:13","updated_at":"2025-11-24 10:02:47","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???̓??@??\u0002B??A@"},{"driver_id":"225d638ce646b1d99d8d","latitude":"33.4937200","longitude":"36.3059160","heading":"22.70","speed":9.715,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-23 18:08:41","updated_at":"2025-11-24 09:00:15","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000ɰ?72?@@]?gA('B@"},{"driver_id":"26259f5601cf5f44e19f","latitude":"33.5162050","longitude":"36.2948800","heading":"123.70","speed":0.6,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-24 01:33:18","updated_at":"2025-11-24 04:19:51","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u000e?d\u0001\u0013?@@K\u001f???%B@"},{"driver_id":"26d74d93f1f305e78922","latitude":"33.5111160","longitude":"36.2632070","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-18 09:32:00","updated_at":"2025-11-24 09:21:17","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000.;??l?@@\u0005?Xİ!B@"},{"driver_id":"2df2856ad078d56b3342","latitude":"33.5084850","longitude":"36.2482560","heading":"0.00","speed":0,"distance":"0.03","status":"off","carType":"Awfar","created_at":"2025-11-22 10:30:50","updated_at":"2025-11-24 09:24:15","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??V\t\u0016?@@??D??\u001fB@"},{"driver_id":"2e5024f830056fd07fa1","latitude":"31.7171590","longitude":"35.9994770","heading":"0.00","speed":1.2,"distance":"198.44","status":"off","carType":"Awfar","created_at":"2025-11-23 14:17:07","updated_at":"2025-11-24 10:08:15","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00005\bs????@V\r????A@"},{"driver_id":"3172970ea084cfea4817","latitude":"33.5001940","longitude":"36.2737020","heading":"185.00","speed":29.3,"distance":"223.65","status":"off","carType":"Awfar","created_at":"2025-11-16 08:53:17","updated_at":"2025-11-24 09:57:26","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??c[\u0006?@@?lɪ\b#B@"},{"driver_id":"38e2d006a7fa47b05d65","latitude":"33.5041760","longitude":"36.2922980","heading":"0.00","speed":0,"distance":"26.87","status":"off","carType":"Awfar","created_at":"2025-11-19 11:16:06","updated_at":"2025-11-24 03:03:59","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000̶?ֈ?@@?WW\u0005j%B@"},{"driver_id":"3b319766c994742595c9","latitude":"36.1961760","longitude":"37.0912340","heading":"0.00","speed":0.1,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-08 13:20:23","updated_at":"2025-11-24 08:20:11","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000K!?K\u001c\u0019B@B$C???B@"},{"driver_id":"3b89af260805255fa7a7","latitude":"34.7415200","longitude":"36.7201000","heading":"282.10","speed":1.073,"distance":"0.10","status":"off","carType":"Awfar","created_at":"2025-11-24 07:49:06","updated_at":"2025-11-24 10:06:57","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000;?? ?^A@??<,\\B@"},{"driver_id":"3c704fe7aa1f129686c3","latitude":"35.1263230","longitude":"36.7614660","heading":"272.40","speed":0,"distance":"2.70","status":"off","carType":"Awfar","created_at":"2025-11-22 10:47:19","updated_at":"2025-11-24 10:06:53","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?? Z+?A@\n?ǷwaB@"},{"driver_id":"3eb6243c7c9de43080b7","latitude":"35.5108940","longitude":"35.7740770","heading":"269.00","speed":30.6,"distance":"4.12","status":"off","carType":"Awfar","created_at":"2025-11-13 08:42:28","updated_at":"2025-11-24 10:04:46","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?~?d?A@?ʃ?\u0014?A@"},{"driver_id":"3f852c43c516853e0f35","latitude":"33.4834680","longitude":"36.3523860","heading":"132.80","speed":22.6,"distance":"54.41","status":"off","carType":"Awfar","created_at":"2025-11-19 08:30:56","updated_at":"2025-11-24 01:34:05","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?T?G?@@??\u0004?\u001a-B@"},{"driver_id":"42775e2b2361af51f8f1","latitude":"34.9764700","longitude":"36.1681440","heading":"64.00","speed":1.8,"distance":"0.04","status":"off","carType":"Awfar","created_at":"2025-11-21 14:24:43","updated_at":"2025-11-24 10:02:37","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00007?\r??|A@b?\u001a??\u0015B@"},{"driver_id":"45889ade20db80bbc087","latitude":"33.5078170","longitude":"36.2877610","heading":"87.00","speed":22.9,"distance":"3596.36","status":"off","carType":"Awfar","created_at":"2025-11-08 05:10:11","updated_at":"2025-11-24 10:01:42","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000*??%\u0000?@@:\b:Z?$B@"},{"driver_id":"463e13549e0007cd4db1","latitude":"33.5368030","longitude":"36.2186430","heading":"47.30","speed":1.774,"distance":"0.02","status":"off","carType":"Awfar","created_at":"2025-11-12 11:38:57","updated_at":"2025-11-24 10:01:49","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??????@@??k~?\u001bB@"},{"driver_id":"4738a3b984b40929552a","latitude":"31.7172390","longitude":"35.9993810","heading":"333.00","speed":14.1,"distance":"689.33","status":"off","carType":"Awfar","created_at":"2025-11-22 14:20:27","updated_at":"2025-11-24 09:50:08","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000nj?????@4?s???A@"},{"driver_id":"49c7c94ed2c141eda1c1","latitude":"35.1351910","longitude":"36.7738060","heading":"0.00","speed":0,"distance":"2.68","status":"off","carType":"Awfar","created_at":"2025-11-19 17:25:04","updated_at":"2025-11-24 09:49:03","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000U?M?M?A@k?3\u0013\fcB@"},{"driver_id":"4d7ba52e0acdd72463ec","latitude":"33.4966480","longitude":"36.2405800","heading":"88.00","speed":18.4,"distance":"13.52","status":"off","carType":"Awfar","created_at":"2025-11-23 10:03:25","updated_at":"2025-11-24 09:58:02","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??b)??@@-\tPS?\u001eB@"},{"driver_id":"51c2aacf2a2c0116d74f","latitude":"34.7354250","longitude":"36.7004410","heading":"0.00","speed":0,"distance":"4.01","status":"off","carType":"Awfar","created_at":"2025-11-23 18:48:14","updated_at":"2025-11-24 09:58:42","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\th\"^A@???\f?YB@"},{"driver_id":"55990e379c52520b6c7a","latitude":"33.5206510","longitude":"36.2947860","heading":"53.00","speed":0,"distance":"0.05","status":"off","carType":"Awfar","created_at":"2025-11-19 09:16:56","updated_at":"2025-11-24 10:04:11","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??$???@@ʨ2??%B@"},{"driver_id":"563b9c41f07290683008","latitude":"33.5246250","longitude":"36.3179980","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-16 06:38:22","updated_at":"2025-11-24 09:35:09","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??x?&?@@?\u0018?(?(B@"},{"driver_id":"5bf140aec5bc942a4cb3","latitude":"33.5059580","longitude":"36.2910490","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-23 04:41:01","updated_at":"2025-11-24 09:55:21","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000%?S;??@@JD?\u0017A%B@"},{"driver_id":"5cb49a2b1105cb03065c","latitude":"33.5280040","longitude":"36.2935050","heading":"55.50","speed":11.4,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-21 16:32:05","updated_at":"2025-11-24 03:25:49","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001f\u0014????@@3\u001bd??%B@"},{"driver_id":"645bea2a9c7db987e1e0","latitude":"33.4928720","longitude":"36.3402580","heading":"274.70","speed":44.9,"distance":"0.09","status":"off","carType":"Awfar","created_at":"2025-11-19 21:09:15","updated_at":"2025-11-24 09:35:24","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\u0000n\u0016?@@?\u0019???+B@"},{"driver_id":"6bc612f4d394fa9fe878","latitude":"33.5167670","longitude":"36.2899420","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-23 08:45:15","updated_at":"2025-11-24 09:47:49","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000vS?k%?@@Q???\u001c%B@"},{"driver_id":"6c8b5969c0a470e08434","latitude":"33.4872710","longitude":"36.3534510","heading":"5.60","speed":6.6,"distance":"489.67","status":"off","carType":"Awfar","created_at":"2025-11-05 17:45:42","updated_at":"2025-11-24 04:27:39","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0005?h?^?@@????=-B@"},{"driver_id":"6ceaa7d63c259040cc14","latitude":"33.5283100","longitude":"36.2302210","heading":"0.00","speed":0,"distance":"10.81","status":"off","carType":"Awfar","created_at":"2025-11-17 18:59:46","updated_at":"2025-11-24 10:08:18","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000+\u0013~???@@\u001c???w\u001dB@"},{"driver_id":"6fa45ad3119ea23b7c0d","latitude":"33.4809480","longitude":"36.2967660","heading":"59.10","speed":0.7,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-17 10:18:31","updated_at":"2025-11-24 00:14:28","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000Ή=???@@IH?m?%B@"},{"driver_id":"7ac9e4174bf33756c805","latitude":"33.5131120","longitude":"36.2738700","heading":"0.00","speed":0.3,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-08 19:59:54","updated_at":"2025-11-24 08:08:24","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??m???@@??\u0012,\u000e#B@"},{"driver_id":"7c76ba913e048f23f843","latitude":"33.5414230","longitude":"36.1944900","heading":"305.00","speed":9.5,"distance":"2.85","status":"off","carType":"Awfar","created_at":"2025-11-09 09:07:02","updated_at":"2025-11-24 09:35:28","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?&OYM?@@\u0014?^\f?\u0018B@"},{"driver_id":"809cd3608cffabea68f7","latitude":"33.5037300","longitude":"36.2593640","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-16 08:41:10","updated_at":"2025-11-24 09:55:02","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0001?9z?@@????2!B@"},{"driver_id":"81fdb95b1382b2872fb3","latitude":"34.8848650","longitude":"35.8909270","heading":"23.00","speed":6.5,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-18 08:34:55","updated_at":"2025-11-24 08:50:11","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u00010?ACqA@?\u000f\\?\t?A@"},{"driver_id":"829ff6e175eab03db06f","latitude":"33.4776300","longitude":"36.3558780","heading":"193.30","speed":41.8,"distance":"0.02","status":"off","carType":"Awfar","created_at":"2025-11-15 23:08:40","updated_at":"2025-11-24 01:49:34","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000S???\"?@@ծ\ti?-B@"},{"driver_id":"83b0ee0dc2c282b3d7a8","latitude":"35.1385300","longitude":"36.7575930","heading":"327.50","speed":1.231,"distance":"21.85","status":"off","carType":"Awfar","created_at":"2025-11-22 09:26:48","updated_at":"2025-11-24 10:08:09","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???Y??A@?V???`B@"},{"driver_id":"89549fbee478ab60767a","latitude":"33.4991780","longitude":"36.2983620","heading":"98.00","speed":36.1,"distance":"6.93","status":"off","carType":"Awfar","created_at":"2025-11-23 14:02:41","updated_at":"2025-11-24 10:06:35","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?p?\u0010?@@@\/ܹ0&B@"},{"driver_id":"8aab8ff92c2f64fe6a41","latitude":"31.7170800","longitude":"35.9993390","heading":"0.00","speed":0,"distance":"4978.96","status":"off","carType":"Awfar","created_at":"2025-11-16 17:48:31","updated_at":"2025-11-24 10:06:59","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\f????@\u0005O!W??A@"},{"driver_id":"8be3f89030c41d39d92f","latitude":"33.5342610","longitude":"36.1852490","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-21 16:34:00","updated_at":"2025-11-24 09:00:18","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?C\u0019?b?@@?N>=?\u0017B@"},{"driver_id":"8dcd36487c39c1e819e6","latitude":"35.5475800","longitude":"35.7709750","heading":"0.00","speed":0,"distance":"5.79","status":"off","carType":"Awfar","created_at":"2025-11-10 20:46:21","updated_at":"2025-11-24 10:08:15","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???\u0019\u0017?A@M?\rO??A@"},{"driver_id":"91a8a20351ff862b1425","latitude":"36.2001180","longitude":"37.1134430","heading":"231.60","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-22 10:43:08","updated_at":"2025-11-24 09:16:56","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??tw?\u0019B@?z?L??B@"},{"driver_id":"986221ffc161a46e0739","latitude":"33.5258690","longitude":"36.2964290","heading":"0.00","speed":0,"distance":"0.03","status":"off","carType":"Awfar","created_at":"2025-11-20 12:23:38","updated_at":"2025-11-24 09:58:50","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000x}?O?@@\u0002K?b?%B@"},{"driver_id":"986bf7b2242410647d05","latitude":"33.5110400","longitude":"36.2994420","heading":"98.00","speed":13.9,"distance":"17.19","status":"off","carType":"Awfar","created_at":"2025-11-22 14:32:00","updated_at":"2025-11-24 10:08:38","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000Sy;?i?@@@??\u001dT&B@"},{"driver_id":"9c323add06d38e0559f4","latitude":"33.5006620","longitude":"36.3216000","heading":"134.00","speed":1.248,"distance":"20.75","status":"off","carType":"Awfar","created_at":"2025-11-11 12:07:40","updated_at":"2025-11-24 00:19:39","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?,B?\u0015?@@a2U0*)B@"},{"driver_id":"9c3647ba52d84e6c5e3f","latitude":"35.1208250","longitude":"36.7637380","heading":"253.00","speed":18.4,"distance":"1.01","status":"off","carType":"Awfar","created_at":"2025-11-12 12:00:52","updated_at":"2025-11-24 05:50:27","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0005ŏ1w?A@1[?*?aB@"},{"driver_id":"9cbf649351a6e59c3944","latitude":"33.5226440","longitude":"36.3013650","heading":"-1.00","speed":0,"distance":"23.03","status":"off","carType":"Awfar","created_at":"2025-11-17 03:45:03","updated_at":"2025-11-24 09:51:52","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??????@@[?? ?&B@"},{"driver_id":"a2f1759c73dfd9638db4","latitude":"33.5630020","longitude":"36.2250520","heading":"0.00","speed":0,"distance":"3.37","status":"off","carType":"Awfar","created_at":"2025-11-22 11:23:27","updated_at":"2025-11-24 09:49:16","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\u0014s\u0010?@@\u001f?\u0001??\u001cB@"},{"driver_id":"a3e8b9c03e3971b59294","latitude":"33.5060690","longitude":"36.2556270","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-24 05:41:02","updated_at":"2025-11-24 10:05:38","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000|Bv???@@?|?b? B@"},{"driver_id":"a69525198fe22e662686","latitude":"33.5409090","longitude":"36.1999650","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-17 09:18:51","updated_at":"2025-11-24 08:02:59","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000X???@@\u001d??s?\u0019B@"},{"driver_id":"a833233fdea216eeb79b","latitude":"35.1243380","longitude":"36.7629370","heading":"174.00","speed":22.3,"distance":"8.35","status":"off","carType":"Awfar","created_at":"2025-11-19 12:56:42","updated_at":"2025-11-24 10:07:57","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00005ӽN?A@E?k?aB@"},{"driver_id":"aca08d714bda3eac7c79","latitude":"35.1276370","longitude":"36.7640220","heading":"0.00","speed":0.3,"distance":"2.71","status":"off","carType":"Awfar","created_at":"2025-11-22 20:38:25","updated_at":"2025-11-24 07:41:04","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00009a?hV?A@V?\u000fy?aB@"},{"driver_id":"ae39478a283a16269428","latitude":"33.4873180","longitude":"36.3054410","heading":"-1.00","speed":-3.6,"distance":"208.56","status":"off","carType":"Awfar","created_at":"2025-11-18 09:19:40","updated_at":"2025-11-24 10:08:28","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000F`?o`?@@??а\u0018'B@"},{"driver_id":"b094051c974094398c1c","latitude":"33.5038900","longitude":"36.2760380","heading":"0.00","speed":0,"distance":"2.82","status":"off","carType":"Awfar","created_at":"2025-11-18 08:20:55","updated_at":"2025-11-24 10:06:44","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0006d?w?@@\u0004:?6U#B@"},{"driver_id":"b223e0002a8144824aff","latitude":"33.5793010","longitude":"36.2990580","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-17 21:12:00","updated_at":"2025-11-24 08:03:01","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\"?\u0000?&?@@??T?G&B@"},{"driver_id":"b2a6ead2f21ceb3bb251","latitude":"33.5876240","longitude":"36.3067270","heading":"12.00","speed":0,"distance":"0.03","status":"off","carType":"Awfar","created_at":"2025-11-12 09:16:17","updated_at":"2025-11-24 07:42:10","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001f,cC7?@@m??B'B@"},{"driver_id":"b9f86195500041ebb118","latitude":"33.5229210","longitude":"36.2629150","heading":"0.00","speed":0,"distance":"56.51","status":"off","carType":"Awfar","created_at":"2025-11-19 12:18:08","updated_at":"2025-11-24 10:08:39","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000 ?H\u0013??@@]P?2?!B@"},{"driver_id":"bed071074c35e054e483","latitude":"33.5423530","longitude":"36.1937500","heading":"0.00","speed":0.1,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-04 14:22:16","updated_at":"2025-11-24 09:19:01","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???k?@@?????\u0018B@"},{"driver_id":"c1319defe4d988ca1a89","latitude":"33.5335470","longitude":"36.2997090","heading":"0.00","speed":0,"distance":"3.09","status":"off","carType":"Awfar","created_at":"2025-11-23 05:58:05","updated_at":"2025-11-24 09:44:33","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??DK?@@??P?\\&B@"},{"driver_id":"c2477764b17fb3cf03a9","latitude":"35.5512000","longitude":"35.8093890","heading":"0.00","speed":0,"distance":"1.71","status":"off","carType":"Awfar","created_at":"2025-11-19 13:56:12","updated_at":"2025-11-24 10:00:00","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0011Ǻ???A@?^\n\u000f??A@"},{"driver_id":"c2e386a7c36b121a9b57","latitude":"33.5198290","longitude":"36.2863580","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-22 12:29:11","updated_at":"2025-11-24 07:51:10","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?A????@@Wy\u0002a?$B@"},{"driver_id":"c35dce8c482255b224e1","latitude":"33.5229580","longitude":"36.2174910","heading":"77.00","speed":1.022,"distance":"9.53","status":"off","carType":"Awfar","created_at":"2025-11-12 08:27:00","updated_at":"2025-11-24 09:49:30","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000>??I??@@Q\u0016???\u001bB@"},{"driver_id":"c3c557e107b487aadc17","latitude":"33.4382320","longitude":"36.1649630","heading":"0.00","speed":0.2,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-22 10:58:21","updated_at":"2025-11-24 03:13:57","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0007v?\u0017?@@h\u0006?\u001d\u0015B@"},{"driver_id":"c9dd062082c31752b9ed","latitude":"31.7181800","longitude":"35.9993280","heading":"0.00","speed":0,"distance":"196.79","status":"off","carType":"Awfar","created_at":"2025-11-19 15:31:25","updated_at":"2025-11-24 09:47:30","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000+???ڷ?@\u0011?????A@"},{"driver_id":"ca0b6f582ce8bf691094","latitude":"33.4907450","longitude":"36.3058710","heading":"2.00","speed":23,"distance":"6.62","status":"off","carType":"Awfar","created_at":"2025-11-24 05:47:39","updated_at":"2025-11-24 10:08:41","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000w?n?о@@????&'B@"},{"driver_id":"ca60f0f65d7d6de23e5c","latitude":"36.2026710","longitude":"37.1122760","heading":"0.00","speed":0,"distance":"0.05","status":"off","carType":"Awfar","created_at":"2025-11-15 09:36:34","updated_at":"2025-11-24 07:02:05","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000l?\u001f?\u0019B@\u0017\u0010Z\u000f_?B@"},{"driver_id":"ca8ca3dd8a14dfaf09ad","latitude":"33.4405630","longitude":"36.2701080","heading":"19.00","speed":30.5,"distance":"18.04","status":"off","carType":"Awfar","created_at":"2025-11-22 10:14:32","updated_at":"2025-11-24 08:53:50","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?iN^d?@@?1!?\"B@"},{"driver_id":"cc0af8fc7568b9eba01c","latitude":"31.7168920","longitude":"35.9993730","heading":"0.00","speed":0,"distance":"6.16","status":"off","carType":"Awfar","created_at":"2025-11-03 19:38:58","updated_at":"2025-11-24 06:33:39","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???;???@??Wt??A@"},{"driver_id":"d0c7dd524e9250cebda0","latitude":"33.4116960","longitude":"36.5125250","heading":"89.60","speed":0.7,"distance":"23.34","status":"off","carType":"Awfar","created_at":"2025-11-23 20:29:01","updated_at":"2025-11-24 10:02:47","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000o?[t??@@?Pk?AB@"},{"driver_id":"d150694c4dbb571782cf","latitude":"31.7171100","longitude":"35.9993150","heading":"0.00","speed":0,"distance":"201.41","status":"off","carType":"Awfar","created_at":"2025-11-18 12:41:20","updated_at":"2025-11-24 10:06:53","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000s?]????@}?͍??A@"},{"driver_id":"d78aeec5337332066f02","latitude":"34.6927490","longitude":"36.7037690","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-08 11:02:18","updated_at":"2025-11-24 08:57:17","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0019????XA@%xC\u001a\u0015ZB@"},{"driver_id":"dc6e32c33f9a43fbb218","latitude":"33.4821870","longitude":"36.3166250","heading":"0.00","speed":0,"distance":"1.29","status":"off","carType":"Awfar","created_at":"2025-11-23 17:24:11","updated_at":"2025-11-24 03:41:14","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00007ǹM??@@J\f\u0002+?(B@"},{"driver_id":"deca7fb63f48b1ca94fb","latitude":"33.4431820","longitude":"36.3515780","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-22 10:34:48","updated_at":"2025-11-24 09:09:39","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0016\u00120??@@\u001e?\u0005?\u0000-B@"},{"driver_id":"e0f047c3e4e817e69e6a","latitude":"33.4934880","longitude":"36.2400300","heading":"214.00","speed":30,"distance":"4.93","status":"off","carType":"Awfar","created_at":"2025-11-19 19:12:29","updated_at":"2025-11-24 09:39:05","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?{b?*?@@?\u0007?M?\u001eB@"},{"driver_id":"e49604074b0b27710516","latitude":"33.5721820","longitude":"36.1939750","heading":"355.00","speed":14.6,"distance":"13.05","status":"off","carType":"Awfar","created_at":"2025-11-23 11:08:29","updated_at":"2025-11-24 09:06:06","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0010??B=?@@?<,?\u0018B@"},{"driver_id":"ed9bbe9d106d47b92a18","latitude":"33.5079030","longitude":"36.2886390","heading":"0.00","speed":0,"distance":"0.83","status":"off","carType":"Awfar","created_at":"2025-11-08 11:38:16","updated_at":"2025-11-24 10:06:45","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000(E+?\u0002?@@Ҭl\u001f?$B@"},{"driver_id":"ee9098c3ff80352d8ea2","latitude":"33.4964920","longitude":"36.2473050","heading":"0.00","speed":0,"distance":"0.00","status":"off","carType":"Awfar","created_at":"2025-11-22 07:27:02","updated_at":"2025-11-24 09:11:35","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\\?\f??@@?????\u001fB@"},{"driver_id":"eed6cf591bc0c14a70fc","latitude":"36.2133570","longitude":"37.1128670","heading":"92.00","speed":42.2,"distance":"16.25","status":"off","carType":"Awfar","created_at":"2025-11-19 10:01:07","updated_at":"2025-11-24 10:07:59","location_point":"?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\u0003??@@??\u0013??*B@"
+ },
+ {
+ "driver_id": "6fa45ad3119ea23b7c0d",
+ "latitude": "33.4809640",
+ "longitude": "36.2965950",
+ "heading": "52.00",
+ "speed": 0.69,
+ "distance": "8.54",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 10:18:31",
+ "updated_at": "2025-12-06 20:00:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?Fu:??@@\u001d?0??%B@"
+ },
+ {
+ "driver_id": "9b5df1af05117f04323e",
+ "latitude": "33.5050840",
+ "longitude": "36.2458420",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 11:57:52",
+ "updated_at": "2025-12-06 20:00:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?ݮ???@@??*?w\u001fB@"
+ },
+ {
+ "driver_id": "b4eb6f4a7b6a99aa7d5c",
+ "latitude": "34.7340120",
+ "longitude": "36.7211340",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 11:26:20",
+ "updated_at": "2025-12-06 20:00:31",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?o?\u001a?]A@O\u0004q\u001eN\\B@"
+ },
+ {
+ "driver_id": "ef660f2e6a9ce671488a",
+ "latitude": "33.5101700",
+ "longitude": "36.2788840",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 18:47:46",
+ "updated_at": "2025-12-06 20:00:16",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000>?$@M?@@W??x?#B@"
+ },
+ {
+ "driver_id": "fd3c6a020f0df4d96c51",
+ "latitude": "33.5008860",
+ "longitude": "36.3052850",
+ "heading": "242.70",
+ "speed": 31.9,
+ "distance": "83.80",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 20:21:30",
+ "updated_at": "2025-12-06 20:00:16",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001b?N\b\u001d?@@?z1?\u0013'B@"
+ },
+ {
+ "driver_id": "6398a0b9f06aed86d727",
+ "latitude": "33.5692630",
+ "longitude": "36.2318970",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-26 19:01:22",
+ "updated_at": "2025-12-06 19:59:34",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000S?'???@@\/?\u0007ͮ\u001dB@"
+ },
+ {
+ "driver_id": "a83d509aa7dd136b453d",
+ "latitude": "33.5320980",
+ "longitude": "36.3610560",
+ "heading": "66.00",
+ "speed": 29.7,
+ "distance": "43.93",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 12:10:02",
+ "updated_at": "2025-12-06 19:59:24",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000-\"??\u001b?@@%\u0003@\u00157.B@"
+ },
+ {
+ "driver_id": "e8ecdfaf9c7f23e60fb5",
+ "latitude": "33.5364310",
+ "longitude": "36.3032720",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 13:44:37",
+ "updated_at": "2025-12-06 19:58:59",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??`ũ?@@q???&B@"
+ },
+ {
+ "driver_id": "d689f7a02e1c41ec1ddb",
+ "latitude": "33.4984560",
+ "longitude": "36.2508200",
+ "heading": "59.00",
+ "speed": 24,
+ "distance": "38.31",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 10:33:17",
+ "updated_at": "2025-12-06 19:58:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000[??gͿ@@c???\u001a B@"
+ },
+ {
+ "driver_id": "1ef563908f031c999ac3",
+ "latitude": "33.6936040",
+ "longitude": "36.3755020",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "215.89",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-07 14:54:23",
+ "updated_at": "2025-12-06 19:58:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\/\u0010\u0004??@@??\u0014s\u00100B@"
+ },
+ {
+ "driver_id": "3c704fe7aa1f129686c3",
+ "latitude": "35.1308330",
+ "longitude": "36.7544440",
+ "heading": "245.10",
+ "speed": 16.3,
+ "distance": "5.18",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 10:47:19",
+ "updated_at": "2025-12-06 19:58:13",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000i\u001e?\"??A@?T???`B@"
+ },
+ {
+ "driver_id": "605bc5d78adf0cd92157",
+ "latitude": "33.4218050",
+ "longitude": "36.1466830",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "9.34",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 08:36:07",
+ "updated_at": "2025-12-06 19:57:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0007%̴??@@??\/??\u0012B@"
+ },
+ {
+ "driver_id": "5eb29c514f0968d5a02a",
+ "latitude": "36.1995410",
+ "longitude": "37.1369350",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 13:29:40",
+ "updated_at": "2025-12-06 19:57:39",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0007?:??\u0019B@?V\t\u0016??B@"
+ },
+ {
+ "driver_id": "7c90a80341e683a29789",
+ "latitude": "33.5341370",
+ "longitude": "36.3026020",
+ "heading": "90.00",
+ "speed": 15.6,
+ "distance": "2.49",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-26 12:19:11",
+ "updated_at": "2025-12-06 19:57:08",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?J?^?@@#ڎ??&B@"
+ },
+ {
+ "driver_id": "65965c104f9e37aba687",
+ "latitude": "33.4849120",
+ "longitude": "36.2959550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 11:53:07",
+ "updated_at": "2025-12-06 19:56:35",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u000f???\u0011?@@9\u000b{??%B@"
+ },
+ {
+ "driver_id": "8aab8ff92c2f64fe6a41",
+ "latitude": "33.5360260",
+ "longitude": "36.3058800",
+ "heading": "29.00",
+ "speed": 28.4,
+ "distance": "95.89",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-16 17:48:31",
+ "updated_at": "2025-12-06 19:50:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000!????@@\u0010@j\u0013''B@"
+ },
+ {
+ "driver_id": "583151e51dc980730494",
+ "latitude": "33.5148010",
+ "longitude": "36.2914550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 11:24:44",
+ "updated_at": "2025-12-06 19:48:47",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000[y????@@???eN%B@"
+ },
+ {
+ "driver_id": "44bd789caf01f3ac6053",
+ "latitude": "33.5596130",
+ "longitude": "36.3239080",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 10:12:58",
+ "updated_at": "2025-12-06 19:46:36",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000N?\u0016f??@@?t=?u)B@"
+ },
+ {
+ "driver_id": "4738a3b984b40929552a",
+ "latitude": "33.5201560",
+ "longitude": "36.3098630",
+ "heading": "278.00",
+ "speed": 24.5,
+ "distance": "48.95",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 14:20:27",
+ "updated_at": "2025-12-06 19:46:20",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?h?x??@@Ǟ=??'B@"
+ },
+ {
+ "driver_id": "b1b69ecaacdd786ed6fb",
+ "latitude": "33.5171960",
+ "longitude": "36.2904250",
+ "heading": "353.00",
+ "speed": 0.6,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 17:10:39",
+ "updated_at": "2025-12-06 19:42:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?πz3?@@lxz?,%B@"
+ },
+ {
+ "driver_id": "1bdab3efe5ca91c59db7",
+ "latitude": "33.5528590",
+ "longitude": "36.3233590",
+ "heading": "42.00",
+ "speed": 10.7,
+ "distance": "93.94",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 07:31:15",
+ "updated_at": "2025-12-06 19:41:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000N&n\u0015??@@\u0003???c)B@"
+ },
+ {
+ "driver_id": "2a2e331de0868a164b0c",
+ "latitude": "36.2075040",
+ "longitude": "37.1658510",
+ "heading": "172.00",
+ "speed": 19.4,
+ "distance": "26.69",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 09:40:03",
+ "updated_at": "2025-12-06 19:40:46",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0004?}?\u001aB@$?\u0006?:?B@"
+ },
+ {
+ "driver_id": "ca60f0f65d7d6de23e5c",
+ "latitude": "36.2023130",
+ "longitude": "37.1126720",
+ "heading": "346.00",
+ "speed": 19.9,
+ "distance": "12.31",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 09:36:34",
+ "updated_at": "2025-12-06 19:35:05",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001fGsd?\u0019B@d?=\tl?B@"
+ },
+ {
+ "driver_id": "eeca8786bec7ff82ab91",
+ "latitude": "33.5377190",
+ "longitude": "36.2971080",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "4.14",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 14:41:59",
+ "updated_at": "2025-12-06 19:34:24",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u000b?????@@????\u0007&B@"
+ },
+ {
+ "driver_id": "ab180e356874c1d98850",
+ "latitude": "33.4844750",
+ "longitude": "36.3151920",
+ "heading": "49.00",
+ "speed": 1.8,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-04 08:52:39",
+ "updated_at": "2025-12-06 19:34:23",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000d]?F\u0003?@@??!6X(B@"
+ },
+ {
+ "driver_id": "9cbf649351a6e59c3944",
+ "latitude": "33.5337870",
+ "longitude": "36.2968840",
+ "heading": "69.50",
+ "speed": 6.7,
+ "distance": "101.48",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 03:45:03",
+ "updated_at": "2025-12-06 19:33:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0003?!S?@@SZK\u0000&B@"
+ },
+ {
+ "driver_id": "bd648f8f81d7afde9c6f",
+ "latitude": "33.5848520",
+ "longitude": "36.3656790",
+ "heading": "349.60",
+ "speed": 21.7,
+ "distance": "106.04",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 09:54:13",
+ "updated_at": "2025-12-06 19:29:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0006?*n??@@??ȑ?.B@"
+ },
+ {
+ "driver_id": "53048279340f0c0930cb",
+ "latitude": "33.5511830",
+ "longitude": "36.2117810",
+ "heading": "38.20",
+ "speed": 19.5,
+ "distance": "78.98",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 12:04:51",
+ "updated_at": "2025-12-06 19:27:31",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000;?\u001f*??@@\u0004uʣ\u001b\u001bB@"
+ },
+ {
+ "driver_id": "74d40382580cc085d107",
+ "latitude": "33.4199890",
+ "longitude": "36.3538050",
+ "heading": "85.30",
+ "speed": 1.9729999999999999,
+ "distance": "3.17",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 10:13:42",
+ "updated_at": "2025-12-06 19:27:06",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0002?\u00153µ@@?\u0014t{I-B@"
+ },
+ {
+ "driver_id": "5af8271bfd5b5bd7033c",
+ "latitude": "33.4847310",
+ "longitude": "36.3514880",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-28 17:44:48",
+ "updated_at": "2025-12-06 19:26:51",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?-X?\u000b?@@?w\f??,B@"
+ },
+ {
+ "driver_id": "08ec60fec0db11ab065e",
+ "latitude": "36.2149150",
+ "longitude": "37.1586210",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 12:14:06",
+ "updated_at": "2025-12-06 19:26:29",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?5?U?\u001bB@??c?M?B@"
+ },
+ {
+ "driver_id": "e864c3bbe2fa7179a1ba",
+ "latitude": "35.1444440",
+ "longitude": "36.7716100",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 22:59:42",
+ "updated_at": "2025-12-06 19:19:38",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000=\r\u0018$}?A@\u001f??\u001d?bB@"
+ },
+ {
+ "driver_id": "eed6cf591bc0c14a70fc",
+ "latitude": "36.2072480",
+ "longitude": "37.1069370",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 10:01:07",
+ "updated_at": "2025-12-06 19:18:55",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0014;\u001a?\u001aB@?ݒ\u001c??B@"
+ },
+ {
+ "driver_id": "5bfc4ab464d369b8b251",
+ "latitude": "33.4989350",
+ "longitude": "36.2460500",
+ "heading": "296.00",
+ "speed": 11.8,
+ "distance": "76.08",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 10:05:28",
+ "updated_at": "2025-12-06 19:18:41",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00006?!\u001aݿ@@$???~\u001fB@"
+ },
+ {
+ "driver_id": "b19cea00f537006cba32",
+ "latitude": "33.5442600",
+ "longitude": "36.1928100",
+ "heading": "301.00",
+ "speed": 38.2,
+ "distance": "82.36",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 08:42:36",
+ "updated_at": "2025-12-06 19:15:24",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?B?O??@@?+???\u0018B@"
+ },
+ {
+ "driver_id": "b984a7ae6a1198aaf1b8",
+ "latitude": "33.5498130",
+ "longitude": "36.3212150",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-10 21:05:44",
+ "updated_at": "2025-12-06 19:14:21",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00004??E`?@@\t???\u001d)B@"
+ },
+ {
+ "driver_id": "9cc5950f6b29f5a031fb",
+ "latitude": "34.7082120",
+ "longitude": "36.7076300",
+ "heading": "292.70",
+ "speed": 0.898,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 16:22:23",
+ "updated_at": "2025-12-06 19:06:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000@Qٰ?ZA@?խ??ZB@"
+ },
+ {
+ "driver_id": "7c76ba913e048f23f843",
+ "latitude": "33.5371720",
+ "longitude": "36.2412550",
+ "heading": "321.00",
+ "speed": 12,
+ "distance": "26.10",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-09 09:07:02",
+ "updated_at": "2025-12-06 19:03:22",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?)V\r??@@??q?\u001eB@"
+ },
+ {
+ "driver_id": "645f409b0636f6fa1252",
+ "latitude": "33.5108220",
+ "longitude": "36.2754120",
+ "heading": "277.00",
+ "speed": 33.9,
+ "distance": "3.99",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 21:45:03",
+ "updated_at": "2025-12-06 19:02:33",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\t??b?@@?vN?@#B@"
+ },
+ {
+ "driver_id": "45889ade20db80bbc087",
+ "latitude": "33.4458810",
+ "longitude": "36.0830550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "124.42",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-08 05:10:11",
+ "updated_at": "2025-12-06 19:00:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00002t?\u0012?@@xb?\nB@"
+ },
+ {
+ "driver_id": "81c3995aceca18b97541",
+ "latitude": "33.5189400",
+ "longitude": "36.3232270",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 10:21:40",
+ "updated_at": "2025-12-06 19:00:15",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\nK(B@"
+ },
+ {
+ "driver_id": "c335dc9138960670f6dc",
+ "latitude": "34.7423480",
+ "longitude": "36.7161970",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 08:58:16",
+ "updated_at": "2025-12-06 18:32:28",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000! _B\u0005_A@%??W?[B@"
+ },
+ {
+ "driver_id": "f5ca5c9eabc931536e08",
+ "latitude": "36.2161800",
+ "longitude": "37.0996050",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 10:46:58",
+ "updated_at": "2025-12-06 18:27:20",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000O\u0006Gɫ\u001bB@P?Lۿ?B@"
+ },
+ {
+ "driver_id": "126face48d0c1fca88d1",
+ "latitude": "34.7236770",
+ "longitude": "36.7016560",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 14:22:48",
+ "updated_at": "2025-12-06 18:26:28",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0007?r?\\A@f?\"??YB@"
+ },
+ {
+ "driver_id": "c8d1485e5dd6b8484bb4",
+ "latitude": "33.5377250",
+ "longitude": "36.2000230",
+ "heading": "115.00",
+ "speed": 3.6,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 11:12:22",
+ "updated_at": "2025-12-06 18:25:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?<,??@@R??Z?\u0019B@"
+ },
+ {
+ "driver_id": "3eb6243c7c9de43080b7",
+ "latitude": "35.5195620",
+ "longitude": "35.7989100",
+ "heading": "90.00",
+ "speed": 28,
+ "distance": "31.39",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-13 08:42:28",
+ "updated_at": "2025-12-06 18:21:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000G\u001f?\u0001??A@C9ѮB?A@"
+ },
+ {
+ "driver_id": "f33b6192212bbd06393e",
+ "latitude": "36.1943630",
+ "longitude": "37.1222500",
+ "heading": "6.30",
+ "speed": 1.166,
+ "distance": "259.90",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 09:30:43",
+ "updated_at": "2025-12-06 18:21:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?F\u0004??\u0018B@??S㥏B@"
+ },
+ {
+ "driver_id": "d3b2c333f66d5b8bac31",
+ "latitude": "35.5074980",
+ "longitude": "35.7748310",
+ "heading": "355.80",
+ "speed": 1.291,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 12:22:35",
+ "updated_at": "2025-12-06 18:18:47",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?dȱ??A@?v??-?A@"
+ },
+ {
+ "driver_id": "84526a946ab104acc806",
+ "latitude": "33.5198330",
+ "longitude": "36.2882370",
+ "heading": "47.00",
+ "speed": 25.6,
+ "distance": "1.11",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-21 14:04:37",
+ "updated_at": "2025-12-06 18:13:09",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?0C??@@??4??$B@"
+ },
+ {
+ "driver_id": "1376afac594c3f2ae601",
+ "latitude": "35.3461500",
+ "longitude": "35.9474690",
+ "heading": "155.50",
+ "speed": 0,
+ "distance": "0.03",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 10:00:05",
+ "updated_at": "2025-12-06 18:12:18",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000U???N?A@?|\b?F?A@"
+ },
+ {
+ "driver_id": "55990e379c52520b6c7a",
+ "latitude": "33.5148080",
+ "longitude": "36.3189570",
+ "heading": "220.00",
+ "speed": 27.2,
+ "distance": "1.46",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 09:16:56",
+ "updated_at": "2025-12-06 18:09:53",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u000e܁:??@@F?=??(B@"
+ },
+ {
+ "driver_id": "1031b1b342a9a9e20b95",
+ "latitude": "33.4515500",
+ "longitude": "36.2376890",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-13 09:40:09",
+ "updated_at": "2025-12-06 18:08:48",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000 A?c̹@@:?ؗl\u001eB@"
+ },
+ {
+ "driver_id": "9d72ed7a604c81631de4",
+ "latitude": "33.5327130",
+ "longitude": "36.1798670",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 13:00:40",
+ "updated_at": "2025-12-06 18:07:41",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000????\/?@@?P??\u0005\u0017B@"
+ },
+ {
+ "driver_id": "092df73b4d8a8e76ab71",
+ "latitude": "33.5110290",
+ "longitude": "36.2892030",
+ "heading": "356.20",
+ "speed": 25.3,
+ "distance": "21.95",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 12:24:03",
+ "updated_at": "2025-12-06 18:04:13",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000_'?ei?@@?s??\u0004%B@"
+ },
+ {
+ "driver_id": "34ccef720239f27febf7",
+ "latitude": "36.2218980",
+ "longitude": "37.1495930",
+ "heading": "35.00",
+ "speed": 8.4,
+ "distance": "34.62",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 07:25:32",
+ "updated_at": "2025-12-06 18:03:14",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001f?V'g\u001cB@?Z\t?%?B@"
+ },
+ {
+ "driver_id": "25c2194c7dd77a9cb9ca",
+ "latitude": "33.5324450",
+ "longitude": "36.3031400",
+ "heading": "8.00",
+ "speed": 38,
+ "distance": "27.83",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 09:03:51",
+ "updated_at": "2025-12-06 17:57:34",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??b('?@@\u0002\u000e?J?&B@"
+ },
+ {
+ "driver_id": "ff2ae874fb90ac2656a9",
+ "latitude": "33.5272620",
+ "longitude": "36.2116550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "19.16",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-09 10:40:56",
+ "updated_at": "2025-12-06 17:53:38",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u000076;R}?@@w?ӂ\u0017\u001bB@"
+ },
+ {
+ "driver_id": "ef0a1e080246d40b293d",
+ "latitude": "33.4845110",
+ "longitude": "36.2115830",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "15.43",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-03 19:49:13",
+ "updated_at": "2025-12-06 17:53:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???t\u0004?@@ݱ?&\u0015\u001bB@"
+ },
+ {
+ "driver_id": "0cf716369949752bc9e6",
+ "latitude": "33.5253200",
+ "longitude": "36.2846160",
+ "heading": "236.00",
+ "speed": 1.339,
+ "distance": "0.47",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-24 10:44:02",
+ "updated_at": "2025-12-06 17:50:40",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000????=?@@??\rLn$B@"
+ },
+ {
+ "driver_id": "5b23b4ca70011211544c",
+ "latitude": "33.5414120",
+ "longitude": "36.1993570",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 12:29:51",
+ "updated_at": "2025-12-06 17:48:23",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\b?L?@@E????\u0019B@"
+ },
+ {
+ "driver_id": "5eef6ca68ace2c832185",
+ "latitude": "33.5356860",
+ "longitude": "36.3022850",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "4.73",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 13:10:35",
+ "updated_at": "2025-12-06 17:47:12",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000hv?[??@@\"?^F?&B@"
+ },
+ {
+ "driver_id": "dd852ec6c0786229a93f",
+ "latitude": "33.5790780",
+ "longitude": "36.2984270",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 11:18:55",
+ "updated_at": "2025-12-06 17:45:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??W:\u001f?@@'?\u001e?2&B@"
+ },
+ {
+ "driver_id": "f7859c2ecf59fea95c59",
+ "latitude": "33.5013910",
+ "longitude": "36.3537380",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 12:41:58",
+ "updated_at": "2025-12-06 17:44:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001e???-?@@\u001d?jIG-B@"
+ },
+ {
+ "driver_id": "448e66f07f9371b8f615",
+ "latitude": "36.1884020",
+ "longitude": "37.1741130",
+ "heading": "255.00",
+ "speed": 27.2,
+ "distance": "9.03",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 09:30:14",
+ "updated_at": "2025-12-06 17:42:36",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000!@??\u001d\u0018B@{g?UI?B@"
+ },
+ {
+ "driver_id": "730c7ecbf9e73ba0301c",
+ "latitude": "33.4943270",
+ "longitude": "36.3414230",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "3.40",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 06:37:47",
+ "updated_at": "2025-12-06 17:41:32",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?Cm\u001bF?@@\u0015????+B@"
+ },
+ {
+ "driver_id": "36fbb55070e5b1ae3651",
+ "latitude": "36.2105290",
+ "longitude": "37.1822820",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 14:36:57",
+ "updated_at": "2025-12-06 17:37:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0007?@??\u001aB@\"S>\u0004U?B@"
+ },
+ {
+ "driver_id": "2ec1748f2eb11b8ee9c2",
+ "latitude": "33.4886640",
+ "longitude": "36.2884600",
+ "heading": "128.50",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 11:13:37",
+ "updated_at": "2025-12-06 17:32:15",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?]????@@\"\u001a?A?$B@"
+ },
+ {
+ "driver_id": "49c7c94ed2c141eda1c1",
+ "latitude": "35.1425670",
+ "longitude": "36.7562540",
+ "heading": "33.60",
+ "speed": 2.451,
+ "distance": "7.21",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 17:25:04",
+ "updated_at": "2025-12-06 17:28:57",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?>????A@\u000e?Z??`B@"
+ },
+ {
+ "driver_id": "9a7f4098997155e6a1a5",
+ "latitude": "33.4930770",
+ "longitude": "36.2396400",
+ "heading": "227.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 15:06:50",
+ "updated_at": "2025-12-06 17:20:18",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000t??%\u001d?@@\u001fh\u0005??\u001eB@"
+ },
+ {
+ "driver_id": "310c071d2ea9a325a6d7",
+ "latitude": "33.4858860",
+ "longitude": "36.3521300",
+ "heading": "1.00",
+ "speed": 14.1,
+ "distance": "34.81",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-28 08:38:02",
+ "updated_at": "2025-12-06 17:20:04",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\/?1?@@b???\u0012-B@"
+ },
+ {
+ "driver_id": "a5499b6d88e61efe0c71",
+ "latitude": "33.4988930",
+ "longitude": "36.2459050",
+ "heading": "284.00",
+ "speed": 12.3,
+ "distance": "24.68",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-16 17:53:00",
+ "updated_at": "2025-12-06 17:18:34",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0007?Ϲۿ@@!v??y\u001fB@"
+ },
+ {
+ "driver_id": "f0dadf61b525b4cbf3ab",
+ "latitude": "33.5023020",
+ "longitude": "36.2388470",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "62.51",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-20 09:31:28",
+ "updated_at": "2025-12-06 17:18:27",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?[?nK?@@??ډ?\u001eB@"
+ },
+ {
+ "driver_id": "a5be1a34ad4cb46f22ae",
+ "latitude": "34.7104210",
+ "longitude": "36.7288060",
+ "heading": "350.00",
+ "speed": 48.3,
+ "distance": "1.79",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 12:39:05",
+ "updated_at": "2025-12-06 17:17:29",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000 ?H\u0013?ZA@u?׃I]B@"
+ },
+ {
+ "driver_id": "838bbc3e9b621ae31149",
+ "latitude": "36.1877690",
+ "longitude": "37.1449390",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 13:32:04",
+ "updated_at": "2025-12-06 17:16:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0019??\b\u0018B@\u001dut\\??B@"
+ },
+ {
+ "driver_id": "8542111a1281a1d9ee58",
+ "latitude": "34.7136100",
+ "longitude": "36.6903230",
+ "heading": "142.00",
+ "speed": 9.5,
+ "distance": "0.43",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 12:02:19",
+ "updated_at": "2025-12-06 17:15:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\f??W[A@?V\n?\\XB@"
+ },
+ {
+ "driver_id": "0d7d0f6518473f799be2",
+ "latitude": "34.7154680",
+ "longitude": "36.7080780",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.23",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 13:13:11",
+ "updated_at": "2025-12-06 17:13:34",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000Ҫ?t?[A@0??L?ZB@"
+ },
+ {
+ "driver_id": "4149481b099bf07e02fc",
+ "latitude": "33.5193190",
+ "longitude": "36.2911310",
+ "heading": "326.00",
+ "speed": 0,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 13:48:29",
+ "updated_at": "2025-12-06 17:09:59",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???\u000by?@@\u0007???C%B@"
+ },
+ {
+ "driver_id": "c2477764b17fb3cf03a9",
+ "latitude": "35.5511950",
+ "longitude": "35.8094530",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 13:56:12",
+ "updated_at": "2025-12-06 17:07:13",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?[Ɏ??A@\u0015S?'??A@"
+ },
+ {
+ "driver_id": "7d7fbde1576bac76ea7e",
+ "latitude": "33.5537820",
+ "longitude": "36.2229030",
+ "heading": "350.00",
+ "speed": 0.8,
+ "distance": "8.76",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-20 09:55:47",
+ "updated_at": "2025-12-06 17:00:53",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\u001dT??@@\u0014??\u0015?\u001cB@"
+ },
+ {
+ "driver_id": "7f9618accf6b629a01d9",
+ "latitude": "33.4989380",
+ "longitude": "36.3307880",
+ "heading": "22.00",
+ "speed": 26.2,
+ "distance": "3.25",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-05 15:10:27",
+ "updated_at": "2025-12-06 16:53:46",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?]L3ݿ@@b??BW*B@"
+ },
+ {
+ "driver_id": "89534d12f661a770784c",
+ "latitude": "33.4235320",
+ "longitude": "36.1412700",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 13:11:47",
+ "updated_at": "2025-12-06 16:47:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?g?K6?@@??\"\u0015\u0012B@"
+ },
+ {
+ "driver_id": "37e4c36c61b8cc8166a4",
+ "latitude": "33.5389030",
+ "longitude": "36.3385090",
+ "heading": "162.00",
+ "speed": 8.8,
+ "distance": "0.48",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 10:32:20",
+ "updated_at": "2025-12-06 16:43:38",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?[\u0004???@@j3NCT+B@"
+ },
+ {
+ "driver_id": "ccc40f0678031eb1dc8a",
+ "latitude": "36.2224740",
+ "longitude": "37.1805350",
+ "heading": "357.90",
+ "speed": 0,
+ "distance": "6.08",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 07:54:40",
+ "updated_at": "2025-12-06 16:40:31",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u001a-\u0007z\u001cB@EdX?\u001b?B@"
+ },
+ {
+ "driver_id": "649c3d3ecf2fc23a3b17",
+ "latitude": "33.4892850",
+ "longitude": "36.3471380",
+ "heading": "0.00",
+ "speed": 0.3,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 10:37:48",
+ "updated_at": "2025-12-06 16:39:54",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00001?\u0010䠾@@t??\u0004o,B@"
+ },
+ {
+ "driver_id": "d67fc826491216d4e0e2",
+ "latitude": "33.5079280",
+ "longitude": "36.2888800",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-08 09:56:18",
+ "updated_at": "2025-12-06 16:37:01",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\\??\u0003?@@?;\u0014\u0005?$B@"
+ },
+ {
+ "driver_id": "1174eec1f4fcce210cae",
+ "latitude": "33.5055370",
+ "longitude": "36.2840240",
+ "heading": "314.50",
+ "speed": 38.6,
+ "distance": "93.73",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 09:47:35",
+ "updated_at": "2025-12-06 16:28:29",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??o??@@????Z$B@"
+ },
+ {
+ "driver_id": "6b75e31c4617c737d7f1",
+ "latitude": "35.5173540",
+ "longitude": "35.7875130",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-21 13:43:29",
+ "updated_at": "2025-12-06 16:27:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00006:?8?A@a\u0016?9??A@"
+ },
+ {
+ "driver_id": "a4e5eb8086eebb896c88",
+ "latitude": "34.7190210",
+ "longitude": "36.7007610",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 14:26:56",
+ "updated_at": "2025-12-06 16:26:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0011P?\b\\A@??T??YB@"
+ },
+ {
+ "driver_id": "654aa82fab73b295768f",
+ "latitude": "36.1921070",
+ "longitude": "37.1243620",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 15:06:39",
+ "updated_at": "2025-12-06 16:26:40",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?*Q??\u0018B@?n\u0011\u0018?B@"
+ },
+ {
+ "driver_id": "56be5cea9e7778f6dda5",
+ "latitude": "36.1851980",
+ "longitude": "37.1250900",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-26 17:41:29",
+ "updated_at": "2025-12-06 16:26:20",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000n?l??\u0017B@@???\u0002?B@"
+ },
+ {
+ "driver_id": "ecede98014a876b9278d",
+ "latitude": "35.5419930",
+ "longitude": "35.8015750",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 09:44:38",
+ "updated_at": "2025-12-06 16:25:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???\u0006`?A@F%u\u0002??A@"
+ },
+ {
+ "driver_id": "fa866fec3430ca2e21a7",
+ "latitude": "33.4329180",
+ "longitude": "36.2354250",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 08:15:40",
+ "updated_at": "2025-12-06 16:25:49",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??e?i?@@??\th\"\u001eB@"
+ },
+ {
+ "driver_id": "4e6dd66445415177ccc2",
+ "latitude": "33.5358440",
+ "longitude": "36.2980980",
+ "heading": "28.90",
+ "speed": 0,
+ "distance": "2.65",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 12:38:45",
+ "updated_at": "2025-12-06 16:21:55",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0000?C???@@c?D\u0013(&B@"
+ },
+ {
+ "driver_id": "92e2fd19f4be30c3c727",
+ "latitude": "35.2046000",
+ "longitude": "36.8462880",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 09:05:54",
+ "updated_at": "2025-12-06 16:17:49",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000|a2U0?A@?I*SlB@"
+ },
+ {
+ "driver_id": "f4f4b7aa333910e55249",
+ "latitude": "33.4958850",
+ "longitude": "36.2938930",
+ "heading": "343.00",
+ "speed": 2.6,
+ "distance": "0.21",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-28 19:33:39",
+ "updated_at": "2025-12-06 16:17:23",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???(y?@@??+I?%B@"
+ },
+ {
+ "driver_id": "f1be19a607dab879610a",
+ "latitude": "33.5390650",
+ "longitude": "36.1798360",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 16:28:09",
+ "updated_at": "2025-12-06 16:16:40",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???\u0014\u0000?@@]R??\u0004\u0017B@"
+ },
+ {
+ "driver_id": "1c39c551928c0c343c5c",
+ "latitude": "33.4918320",
+ "longitude": "36.2925370",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 09:48:04",
+ "updated_at": "2025-12-06 16:14:27",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000*??Y??@@[?7?q%B@"
+ },
+ {
+ "driver_id": "c061190dfa286a236931",
+ "latitude": "35.1330430",
+ "longitude": "36.7504110",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 11:14:28",
+ "updated_at": "2025-12-06 16:13:57",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001a???\u0007?A@?Ƿw\r`B@"
+ },
+ {
+ "driver_id": "a8f297a461220b359d30",
+ "latitude": "33.5667120",
+ "longitude": "36.3215730",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "19.35",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-10 18:28:46",
+ "updated_at": "2025-12-06 16:12:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0019 ?\u0004??@@h#?M))B@"
+ },
+ {
+ "driver_id": "b0bd0b8d7e1a0b554deb",
+ "latitude": "33.5187170",
+ "longitude": "36.2955930",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 11:14:45",
+ "updated_at": "2025-12-06 16:11:35",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?p?Qe?@@?????%B@"
+ },
+ {
+ "driver_id": "85f72af85cf24b71c24a",
+ "latitude": "33.4955170",
+ "longitude": "36.2475090",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 09:34:11",
+ "updated_at": "2025-12-06 16:05:11",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000W??\u0019m?@@?;?_?\u001fB@"
+ },
+ {
+ "driver_id": "97c2e0da965a1e5c8a78",
+ "latitude": "35.1260450",
+ "longitude": "36.7766820",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 11:02:26",
+ "updated_at": "2025-12-06 16:04:17",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?i\u0018>\"?A@)??PjcB@"
+ },
+ {
+ "driver_id": "137c6bb88dda64a66e0c",
+ "latitude": "33.5361870",
+ "longitude": "36.2244710",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "3.65",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-28 13:36:43",
+ "updated_at": "2025-12-06 16:03:57",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000*Ŏơ?@@A?9w?\u001cB@"
+ },
+ {
+ "driver_id": "2aec5551d50f3e3966a5",
+ "latitude": "33.4779150",
+ "longitude": "36.3323240",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.09",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 13:57:18",
+ "updated_at": "2025-12-06 16:01:42",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000I??Q,?@@??×?*B@"
+ },
+ {
+ "driver_id": "657ab5f025aabe9f0673",
+ "latitude": "33.5406970",
+ "longitude": "36.2468420",
+ "heading": "91.00",
+ "speed": 14.1,
+ "distance": "106.69",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-11 09:37:05",
+ "updated_at": "2025-12-06 15:59:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0005.?5?@@??Ƅ?\u001fB@"
+ },
+ {
+ "driver_id": "19c29d0f68c11a010f1e",
+ "latitude": "33.4898950",
+ "longitude": "36.3335130",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "5.05",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-20 12:57:27",
+ "updated_at": "2025-12-06 15:58:45",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\u001dᴾ@@;?э?*B@"
+ },
+ {
+ "driver_id": "e8dc842b8079a31b1878",
+ "latitude": "33.4737070",
+ "longitude": "36.3271870",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "3.56",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 12:30:49",
+ "updated_at": "2025-12-06 15:58:07",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000qqTn??@@?V|C?)B@"
+ },
+ {
+ "driver_id": "a644fd49f0528cc7e021",
+ "latitude": "33.5178570",
+ "longitude": "36.2854480",
+ "heading": "347.10",
+ "speed": 0,
+ "distance": "1.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 13:51:49",
+ "updated_at": "2025-12-06 15:52:45",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??_#I?@@?Z`??$B@"
+ },
+ {
+ "driver_id": "0f4b45c3c06036be4c3a",
+ "latitude": "33.5079280",
+ "longitude": "36.2873820",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-10 09:00:12",
+ "updated_at": "2025-12-06 15:51:36",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\\??\u0003?@@ú???$B@"
+ },
+ {
+ "driver_id": "d5cd48bb67b00bab52db",
+ "latitude": "33.4996680",
+ "longitude": "36.3050600",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-03 10:02:49",
+ "updated_at": "2025-12-06 15:43:42",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?m?\u001e??@@???4\f'B@"
+ },
+ {
+ "driver_id": "4b19912229b232f0056a",
+ "latitude": "36.1991730",
+ "longitude": "37.1400950",
+ "heading": "13.30",
+ "speed": 0.538,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 05:38:15",
+ "updated_at": "2025-12-06 15:41:41",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??8?~\u0019B@??\t??B@"
+ },
+ {
+ "driver_id": "6696baf35ae52a8bd3e9",
+ "latitude": "33.4848010",
+ "longitude": "36.3509100",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 13:29:42",
+ "updated_at": "2025-12-06 15:34:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\b??\r?@@p?n??,B@"
+ },
+ {
+ "driver_id": "63a10b52d39cfe20c0db",
+ "latitude": "33.5269670",
+ "longitude": "36.2920890",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "5.41",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-28 00:31:44",
+ "updated_at": "2025-12-06 15:31:08",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001e???s?@@?B\u001f,c%B@"
+ },
+ {
+ "driver_id": "7ad04f1b04e096564da4",
+ "latitude": "33.5141750",
+ "longitude": "36.3144300",
+ "heading": "297.10",
+ "speed": 0,
+ "distance": "0.07",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 10:20:51",
+ "updated_at": "2025-12-06 15:26:12",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000ݵ?|??@@?p\u0003>?(B@"
+ },
+ {
+ "driver_id": "0202738107f380a3cac0",
+ "latitude": "33.4978770",
+ "longitude": "36.2977390",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.09",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 11:28:17",
+ "updated_at": "2025-12-06 15:24:49",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001e7?n??@@3??O\u001c&B@"
+ },
+ {
+ "driver_id": "d78aeec5337332066f02",
+ "latitude": "34.7185040",
+ "longitude": "36.6935180",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-08 11:02:18",
+ "updated_at": "2025-12-06 15:20:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0005g??[A@???2?XB@"
+ },
+ {
+ "driver_id": "ada5dbf7eb073fefa31d",
+ "latitude": "33.5379600",
+ "longitude": "36.2892280",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "1.73",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 13:18:40",
+ "updated_at": "2025-12-06 15:19:21",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00000G????@@3?Pl\u0005%B@"
+ },
+ {
+ "driver_id": "e924581d4f777fdb803e",
+ "latitude": "34.7018600",
+ "longitude": "36.6985030",
+ "heading": "127.30",
+ "speed": 3,
+ "distance": "20.34",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 09:50:54",
+ "updated_at": "2025-12-06 15:14:11",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000o\/i??YA@6?ڋhYB@"
+ },
+ {
+ "driver_id": "a3d6653bd54205d51ee6",
+ "latitude": "33.5016480",
+ "longitude": "36.2406040",
+ "heading": "178.40",
+ "speed": 6.4,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 13:35:02",
+ "updated_at": "2025-12-06 15:11:47",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000J\rm\u00006?@@???\u001c?\u001eB@"
+ },
+ {
+ "driver_id": "20e5135cf73b8d1828cb",
+ "latitude": "33.4286370",
+ "longitude": "36.3473400",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 12:34:37",
+ "updated_at": "2025-12-06 15:04:26",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?mēݶ@@?K\u001a?u,B@"
+ },
+ {
+ "driver_id": "f6aed5cb4ebe5a77a6d3",
+ "latitude": "33.4830680",
+ "longitude": "36.3003200",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "7.74",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-26 09:00:00",
+ "updated_at": "2025-12-06 15:02:25",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000@?\u0016,ս@@?*??p&B@"
+ },
+ {
+ "driver_id": "6ccffd6e48962ad41edd",
+ "latitude": "33.5278130",
+ "longitude": "36.2854970",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 22:14:03",
+ "updated_at": "2025-12-06 15:00:53",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??Z`??@@?\rk*?$B@"
+ },
+ {
+ "driver_id": "8f0ab70fb73ec796a938",
+ "latitude": "36.2192540",
+ "longitude": "37.1650550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-05 09:47:41",
+ "updated_at": "2025-12-06 14:56:27",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00003?ۃ\u0010\u001cB@I??? ?B@"
+ },
+ {
+ "driver_id": "6ceaa7d63c259040cc14",
+ "latitude": "33.5455790",
+ "longitude": "36.2140510",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "12.77",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 18:59:46",
+ "updated_at": "2025-12-06 14:48:38",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u000031]???@@?V?\u0005f\u001bB@"
+ },
+ {
+ "driver_id": "a1f11b575b80f0be1e7e",
+ "latitude": "33.5264960",
+ "longitude": "36.3019040",
+ "heading": "7.90",
+ "speed": 60.6,
+ "distance": "57.52",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-18 12:08:30",
+ "updated_at": "2025-12-06 14:43:10",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000Ǽ?8d?@@\u000bDOʤ&B@"
+ },
+ {
+ "driver_id": "3172970ea084cfea4817",
+ "latitude": "33.5435780",
+ "longitude": "36.3202010",
+ "heading": "3.00",
+ "speed": 27,
+ "distance": "35.41",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-16 08:53:17",
+ "updated_at": "2025-12-06 14:40:06",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?i????@@???X?(B@"
+ },
+ {
+ "driver_id": "869f6fad088fefade270",
+ "latitude": "33.5465510",
+ "longitude": "36.2225080",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "16.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 13:47:45",
+ "updated_at": "2025-12-06 14:21:29",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000ML\u0017b??@@??c${\u001cB@"
+ },
+ {
+ "driver_id": "afdb9e58fdca8a01ed49",
+ "latitude": "34.7340710",
+ "longitude": "36.7219710",
+ "heading": "302.00",
+ "speed": 25.8,
+ "distance": "29.81",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 06:09:16",
+ "updated_at": "2025-12-06 14:20:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???\t?]A@?Դ?i\\B@"
+ },
+ {
+ "driver_id": "bceedcd3718004b64a07",
+ "latitude": "33.5029530",
+ "longitude": "36.2876120",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.20",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 12:10:37",
+ "updated_at": "2025-12-06 14:18:39",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000i6??`?@@??Rx?$B@"
+ },
+ {
+ "driver_id": "a75c2de879c3c80bcb84",
+ "latitude": "33.5111420",
+ "longitude": "36.3180730",
+ "heading": "-1.00",
+ "speed": -3.6,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 11:13:49",
+ "updated_at": "2025-12-06 13:54:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000W??\u0019m?@@?^???(B@"
+ },
+ {
+ "driver_id": "769e01db6b2e4b3d2872",
+ "latitude": "33.4962120",
+ "longitude": "36.2839430",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-26 09:11:33",
+ "updated_at": "2025-12-06 13:53:00",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???߃?@@?v?>X$B@"
+ },
+ {
+ "driver_id": "11135e8b2c60788a6fe8",
+ "latitude": "33.4998850",
+ "longitude": "36.2527350",
+ "heading": "229.00",
+ "speed": 46.9,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 10:53:43",
+ "updated_at": "2025-12-06 13:50:30",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000gaO;??@@??מY B@"
+ },
+ {
+ "driver_id": "8f1e1ea47dd4ee41f3fd",
+ "latitude": "33.5357130",
+ "longitude": "36.3035520",
+ "heading": "318.90",
+ "speed": 0.5,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 05:26:33",
+ "updated_at": "2025-12-06 13:43:33",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000b?[>??@@UQ???&B@"
+ },
+ {
+ "driver_id": "cc300dd0231c2b55c28b",
+ "latitude": "33.5187380",
+ "longitude": "36.2868920",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "3.53",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 12:22:54",
+ "updated_at": "2025-12-06 13:42:23",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???\u0001f?@@????$B@"
+ },
+ {
+ "driver_id": "461aa569110ff0282e3e",
+ "latitude": "35.3676860",
+ "longitude": "35.9218350",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "6.72",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-24 09:42:54",
+ "updated_at": "2025-12-06 13:39:42",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00009??U\u0010?A@r?t???A@"
+ },
+ {
+ "driver_id": "e6b3ff505a499aa7739c",
+ "latitude": "34.7456890",
+ "longitude": "36.7158430",
+ "heading": "95.00",
+ "speed": 27.4,
+ "distance": "501.28",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-28 16:13:38",
+ "updated_at": "2025-12-06 13:38:06",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000T???r_A@\u0007\tQ??[B@"
+ },
+ {
+ "driver_id": "80b4b37bce4db865859b",
+ "latitude": "33.5165380",
+ "longitude": "36.2615480",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "1.68",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-24 19:12:39",
+ "updated_at": "2025-12-06 13:37:49",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0014???\u001d?@@?*?gz!B@"
+ },
+ {
+ "driver_id": "22d120e52d994fbbbc3f",
+ "latitude": "33.5287890",
+ "longitude": "36.2240300",
+ "heading": "124.00",
+ "speed": 15,
+ "distance": "22.77",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 14:53:20",
+ "updated_at": "2025-12-06 13:34:29",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0006??[??@@T??\u0003?\u001cB@"
+ },
+ {
+ "driver_id": "3bbb42ed075a8c891b01",
+ "latitude": "33.4838410",
+ "longitude": "36.3465840",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.10",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 09:02:49",
+ "updated_at": "2025-12-06 13:21:19",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000b?{??@@??P?\\,B@"
+ },
+ {
+ "driver_id": "54d9474c84f795e5f9c5",
+ "latitude": "33.5266220",
+ "longitude": "36.2213170",
+ "heading": "-1.00",
+ "speed": 0,
+ "distance": "0.03",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 18:31:59",
+ "updated_at": "2025-12-06 13:21:09",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000T??Yh?@@@??\u001dT\u001cB@"
+ },
+ {
+ "driver_id": "519b54fc365873063cc8",
+ "latitude": "33.4546560",
+ "longitude": "36.2456490",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 09:23:44",
+ "updated_at": "2025-12-06 13:11:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0010w?*2?@@ƥ*mq\u001fB@"
+ },
+ {
+ "driver_id": "69a5da822057ba5bc81e",
+ "latitude": "33.5026180",
+ "longitude": "36.2578850",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "2.14",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-26 12:02:29",
+ "updated_at": "2025-12-06 13:05:08",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?0`?U?@@??,`\u0002!B@"
+ },
+ {
+ "driver_id": "2602f255bfde6dec17b8",
+ "latitude": "33.5359650",
+ "longitude": "36.1989810",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 11:31:14",
+ "updated_at": "2025-12-06 12:57:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000{fI???@@@Û5x\u0019B@"
+ },
+ {
+ "driver_id": "ce1e70fd4e686f2db861",
+ "latitude": "33.5218390",
+ "longitude": "36.2793810",
+ "heading": "164.90",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 18:51:40",
+ "updated_at": "2025-12-06 12:56:36",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?cϞ??@@?\u000f???#B@"
+ },
+ {
+ "driver_id": "16fc82579a23a763638a",
+ "latitude": "33.6323210",
+ "longitude": "36.3936830",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-20 17:36:51",
+ "updated_at": "2025-12-06 12:55:45",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000y?????@@??\\4d2B@"
+ },
+ {
+ "driver_id": "d0cecd70c12511ec242f",
+ "latitude": "33.5868900",
+ "longitude": "36.3803240",
+ "heading": "127.30",
+ "speed": 0.92,
+ "distance": "44.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 08:56:51",
+ "updated_at": "2025-12-06 12:51:26",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?,&6\u001f?@@$??t?0B@"
+ },
+ {
+ "driver_id": "e0f047c3e4e817e69e6a",
+ "latitude": "33.5040770",
+ "longitude": "36.2928550",
+ "heading": "150.00",
+ "speed": 7.7,
+ "distance": "15.11",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 19:12:29",
+ "updated_at": "2025-12-06 12:35:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00009?Z???@@,??E|%B@"
+ },
+ {
+ "driver_id": "3cfa8c4cf49223ed2d95",
+ "latitude": "33.5383750",
+ "longitude": "36.3062370",
+ "heading": "4.00",
+ "speed": 52.7,
+ "distance": "21272.19",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-14 20:54:09",
+ "updated_at": "2025-12-06 12:31:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???x??@@??%?2'B@"
+ },
+ {
+ "driver_id": "09caa9bca6abbbe9cf22",
+ "latitude": "35.1362390",
+ "longitude": "36.7854230",
+ "heading": "314.00",
+ "speed": 12.5,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 10:09:38",
+ "updated_at": "2025-12-06 12:31:25",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000J??Gp?A@[C???dB@"
+ },
+ {
+ "driver_id": "e64415f4b22edf26cbd9",
+ "latitude": "33.5124480",
+ "longitude": "36.3191180",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "17.32",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 13:00:14",
+ "updated_at": "2025-12-06 12:23:42",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000Gsd??@@P????(B@"
+ },
+ {
+ "driver_id": "5031bb013d7b6fab3da0",
+ "latitude": "33.5326520",
+ "longitude": "36.2174980",
+ "heading": "0.00",
+ "speed": 0.2,
+ "distance": "5.29",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 14:32:46",
+ "updated_at": "2025-12-06 12:17:15",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0012\u0013??-?@@\u0003yv??\u001bB@"
+ },
+ {
+ "driver_id": "f9551e01dd7b5d62e743",
+ "latitude": "33.5073350",
+ "longitude": "36.2885500",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-20 14:00:50",
+ "updated_at": "2025-12-06 12:15:19",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000ގpZ??@@b??4?$B@"
+ },
+ {
+ "driver_id": "f48c50ef7bb6f55e710c",
+ "latitude": "33.4351750",
+ "longitude": "36.2391220",
+ "heading": "211.00",
+ "speed": 0,
+ "distance": "0.16",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-12 19:15:42",
+ "updated_at": "2025-12-06 12:13:36",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??|г?@@?ฌ?\u001eB@"
+ },
+ {
+ "driver_id": "1ef1491da9d9c1b6dd9f",
+ "latitude": "33.5402140",
+ "longitude": "36.1797160",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 08:46:30",
+ "updated_at": "2025-12-06 12:13:23",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?k{?%?@@?H\u0013?\u0000\u0017B@"
+ },
+ {
+ "driver_id": "b246ef83c22f759dfb6e",
+ "latitude": "33.4354960",
+ "longitude": "36.2399110",
+ "heading": "0.00",
+ "speed": 0.1,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 09:29:20",
+ "updated_at": "2025-12-06 12:07:48",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??:U??@@?yUg?\u001eB@"
+ },
+ {
+ "driver_id": "f8a7b58a2489a9c992cc",
+ "latitude": "33.5658320",
+ "longitude": "36.3244280",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-07 13:48:38",
+ "updated_at": "2025-12-06 11:58:23",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???.m?@@\u000e?Pۆ)B@"
+ },
+ {
+ "driver_id": "04a7eb67f611ec87acfe",
+ "latitude": "35.5163060",
+ "longitude": "35.7750510",
+ "heading": "282.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-24 09:26:11",
+ "updated_at": "2025-12-06 11:49:05",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000B]?P\u0016?A@??\u0004?4?A@"
+ },
+ {
+ "driver_id": "875bd08c75cf466a4c4c",
+ "latitude": "33.5098520",
+ "longitude": "36.2863000",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "41.95",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 14:00:29",
+ "updated_at": "2025-12-06 11:48:08",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000m??B?@@\"lxz?$B@"
+ },
+ {
+ "driver_id": "f9f03f7a867713804576",
+ "latitude": "33.5277370",
+ "longitude": "36.2062880",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 08:35:39",
+ "updated_at": "2025-12-06 11:43:49",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?????@@T?*?g\u001aB@"
+ },
+ {
+ "driver_id": "634342629789d0c678ff",
+ "latitude": "33.5353010",
+ "longitude": "36.1983160",
+ "heading": "208.00",
+ "speed": 41.3,
+ "distance": "2.60",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 14:35:04",
+ "updated_at": "2025-12-06 11:43:22",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u000fB@???@@\u0003#\/kb\u0019B@"
+ },
+ {
+ "driver_id": "205d370a2776373bb4dc",
+ "latitude": "33.4983150",
+ "longitude": "36.3308480",
+ "heading": "1.60",
+ "speed": 4.3,
+ "distance": "14.55",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 13:41:13",
+ "updated_at": "2025-12-06 11:39:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\r2?ȿ@@8?-:Y*B@"
+ },
+ {
+ "driver_id": "2a9bd4e90d3c89ac60cc",
+ "latitude": "34.7285380",
+ "longitude": "36.7072250",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-24 19:59:31",
+ "updated_at": "2025-12-06 11:39:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000V?@]A@??JY?ZB@"
+ },
+ {
+ "driver_id": "809cd3608cffabea68f7",
+ "latitude": "33.5010010",
+ "longitude": "36.2788290",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-16 08:41:10",
+ "updated_at": "2025-12-06 11:31:07",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?!?? ?@@?\u0016.??#B@"
+ },
+ {
+ "driver_id": "54e82142ff9fe6c0e5ce",
+ "latitude": "33.4952710",
+ "longitude": "36.2747560",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 09:30:22",
+ "updated_at": "2025-12-06 11:30:22",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000 ?E\ne?@@?0a4+#B@"
+ },
+ {
+ "driver_id": "88e8197a235be9c4c06e",
+ "latitude": "33.4841950",
+ "longitude": "36.3428130",
+ "heading": "105.40",
+ "speed": 4.4,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-10 08:30:06",
+ "updated_at": "2025-12-06 11:29:36",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\f\u001a??@@c??K?+B@"
+ },
+ {
+ "driver_id": "d616715be4f7551f0333",
+ "latitude": "33.5463820",
+ "longitude": "36.3087830",
+ "heading": "244.30",
+ "speed": 22.3,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 15:01:29",
+ "updated_at": "2025-12-06 11:20:27",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??j???@@?G?3?'B@"
+ },
+ {
+ "driver_id": "c2e386a7c36b121a9b57",
+ "latitude": "33.5518270",
+ "longitude": "36.3225970",
+ "heading": "180.00",
+ "speed": 0.4,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 12:29:11",
+ "updated_at": "2025-12-06 11:09:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000`\u0006cD??@@?d??J)B@"
+ },
+ {
+ "driver_id": "b0fb46530b85a1ddb996",
+ "latitude": "34.8766770",
+ "longitude": "35.8805160",
+ "heading": "14.40",
+ "speed": 0,
+ "distance": "0.05",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 12:30:37",
+ "updated_at": "2025-12-06 10:57:11",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0013??6pA@h͏???A@"
+ },
+ {
+ "driver_id": "49a2995fb40fe3168828",
+ "latitude": "33.5139250",
+ "longitude": "36.3148530",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 11:52:19",
+ "updated_at": "2025-12-06 10:49:07",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000d?]K??@@\u0014\u0006e\u001aM(B@"
+ },
+ {
+ "driver_id": "bdc893624e079642a002",
+ "latitude": "33.4874890",
+ "longitude": "36.3369990",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 08:40:18",
+ "updated_at": "2025-12-06 10:40:18",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000r\u0014 \nf?@@q??\"+B@"
+ },
+ {
+ "driver_id": "24516a40209afe070a4b",
+ "latitude": "33.5276000",
+ "longitude": "36.3509670",
+ "heading": "70.00",
+ "speed": 21.2,
+ "distance": "0.03",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-13 08:33:45",
+ "updated_at": "2025-12-06 10:36:41",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000O??e??@@?|?|?,B@"
+ },
+ {
+ "driver_id": "f9a261e4ac0fe3aad099",
+ "latitude": "33.4973500",
+ "longitude": "36.2730920",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-03 22:38:34",
+ "updated_at": "2025-12-06 10:34:04",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00002U0*??@@Mf???\"B@"
+ },
+ {
+ "driver_id": "a8bc77b5f10f23648ecc",
+ "latitude": "33.4855250",
+ "longitude": "36.3428980",
+ "heading": "2.00",
+ "speed": 13.4,
+ "distance": "2.14",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 09:39:32",
+ "updated_at": "2025-12-06 10:21:24",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?1?%?@@???\u0014?+B@"
+ },
+ {
+ "driver_id": "683caef3292565fba5b8",
+ "latitude": "33.4654630",
+ "longitude": "36.2851940",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 13:40:05",
+ "updated_at": "2025-12-06 10:20:16",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???J??@@???$B@"
+ },
+ {
+ "driver_id": "9ac325b5fe2c722b841e",
+ "latitude": "33.5216880",
+ "longitude": "36.2951060",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 08:11:06",
+ "updated_at": "2025-12-06 10:15:14",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?[!???@@;m?\b?%B@"
+ },
+ {
+ "driver_id": "90bab7733040895c39ac",
+ "latitude": "33.4654230",
+ "longitude": "36.3167880",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 08:14:38",
+ "updated_at": "2025-12-06 10:15:04",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00002?\u0019???@@??Y??(B@"
+ },
+ {
+ "driver_id": "4dfd4cda2e392d2143a1",
+ "latitude": "36.2353080",
+ "longitude": "37.2070450",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 13:02:38",
+ "updated_at": "2025-12-06 09:45:53",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\\>??\u001e\u001eB@q?Ws??B@"
+ },
+ {
+ "driver_id": "cb403c0e6be9db772423",
+ "latitude": "33.5052420",
+ "longitude": "36.3097830",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-11 08:12:30",
+ "updated_at": "2025-12-06 09:45:22",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000gH\u0015ū?@@??&??'B@"
+ },
+ {
+ "driver_id": "96198d595773ddc3034e",
+ "latitude": "33.5283320",
+ "longitude": "36.2121890",
+ "heading": "136.80",
+ "speed": 24.4,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 17:22:43",
+ "updated_at": "2025-12-06 09:40:12",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0013?\nb??@@\u0015?W\u0002)\u001bB@"
+ },
+ {
+ "driver_id": "b7c28b0afafd307513f3",
+ "latitude": "33.4687740",
+ "longitude": "36.3372710",
+ "heading": "258.00",
+ "speed": 7.2,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 09:15:05",
+ "updated_at": "2025-12-06 09:26:21",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??S?\u0000?@@?q5?++B@"
+ },
+ {
+ "driver_id": "1a1c5eb405a4932015cd",
+ "latitude": "33.4873130",
+ "longitude": "36.3786030",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 16:49:05",
+ "updated_at": "2025-12-06 09:13:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00004??E`?@@p?'\u0010v0B@"
+ },
+ {
+ "driver_id": "ef5c7227c393fedd81c3",
+ "latitude": "33.5025770",
+ "longitude": "36.2873270",
+ "heading": "138.00",
+ "speed": 22.4,
+ "distance": "24.75",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 19:17:29",
+ "updated_at": "2025-12-06 09:08:46",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000d\\qqT?@@? ?!?$B@"
+ },
+ {
+ "driver_id": "788db828696cecb70787",
+ "latitude": "35.5455790",
+ "longitude": "35.8088660",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 14:00:23",
+ "updated_at": "2025-12-06 09:03:12",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u000031]???A@Ul???A@"
+ },
+ {
+ "driver_id": "199b18f52da3c1976bbc",
+ "latitude": "33.5234950",
+ "longitude": "36.2921090",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 12:18:23",
+ "updated_at": "2025-12-06 09:00:12",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000LOX?\u0001?@@\u0003???c%B@"
+ },
+ {
+ "driver_id": "1e62089fb1ae55a4cbc2",
+ "latitude": "33.4844130",
+ "longitude": "36.3191870",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 22:11:51",
+ "updated_at": "2025-12-06 08:29:22",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?`?>\u0001?@@x'?\u001e?(B@"
+ },
+ {
+ "driver_id": "a6c1ca64ab82c20b30ba",
+ "latitude": "33.5233800",
+ "longitude": "36.2747100",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 08:56:54",
+ "updated_at": "2025-12-06 08:18:26",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???\u001d??@@,?)#B@"
+ },
+ {
+ "driver_id": "2c5a1d31892bcf70ebbf",
+ "latitude": "33.5066950",
+ "longitude": "36.2922280",
+ "heading": "31.90",
+ "speed": 0,
+ "distance": "0.08",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 09:30:25",
+ "updated_at": "2025-12-06 07:58:39",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0005?a??@@?|#?g%B@"
+ },
+ {
+ "driver_id": "51bfc5d4de715cf4f9a7",
+ "latitude": "36.0061480",
+ "longitude": "36.6713860",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-20 07:17:15",
+ "updated_at": "2025-12-06 07:52:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?w)u?\u0000B@\u0002???UB@"
+ },
+ {
+ "driver_id": "cffe9f8613f1c3c484fa",
+ "latitude": "33.7235390",
+ "longitude": "36.0925310",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 15:23:54",
+ "updated_at": "2025-12-06 07:46:11",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?0\u000b??@@?nI\u000e?\u000bB@"
+ },
+ {
+ "driver_id": "3b319766c994742595c9",
+ "latitude": "36.1961690",
+ "longitude": "37.0912070",
+ "heading": "29.00",
+ "speed": 2,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-08 13:20:23",
+ "updated_at": "2025-12-06 07:45:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???\u0010\u001c\u0019B@H\u0015ū??B@"
+ },
+ {
+ "driver_id": "986bf7b2242410647d05",
+ "latitude": "33.5260400",
+ "longitude": "36.2772690",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 14:32:00",
+ "updated_at": "2025-12-06 07:17:30",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?1ZGU?@@??}#B@"
+ },
+ {
+ "driver_id": "1d72d681741d8d0cf1b6",
+ "latitude": "33.6543250",
+ "longitude": "35.9779380",
+ "heading": "144.80",
+ "speed": 15.6,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-10 03:20:00",
+ "updated_at": "2025-12-06 06:56:01",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000D?????@@\u0001\u0012-?A@"
+ },
+ {
+ "driver_id": "4d4af93db0cba269984c",
+ "latitude": "36.2211310",
+ "longitude": "37.1474650",
+ "heading": "255.00",
+ "speed": 0,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 13:17:41",
+ "updated_at": "2025-12-06 05:55:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000ސF\u0005N\u001cB@?&\u0014\"??B@"
+ },
+ {
+ "driver_id": "6db0b191c9d25bf74dc4",
+ "latitude": "33.4610260",
+ "longitude": "36.2287420",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 04:55:03",
+ "updated_at": "2025-12-06 05:50:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?Md?\u0002?@@^??jG\u001dB@"
+ },
+ {
+ "driver_id": "0ebfa5485162cbaa643d",
+ "latitude": "36.1969530",
+ "longitude": "37.1321150",
+ "heading": "68.60",
+ "speed": 1.2,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 12:53:17",
+ "updated_at": "2025-12-06 05:33:43",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???5\u0019B@?'?$?B@"
+ },
+ {
+ "driver_id": "aec6f1335b72b5976dea",
+ "latitude": "33.5183030",
+ "longitude": "36.2804580",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "3.46",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 07:54:40",
+ "updated_at": "2025-12-06 05:01:28",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?5??W?@@g?8\f?#B@"
+ },
+ {
+ "driver_id": "a93eb0399131ac83e9c2",
+ "latitude": "33.5056080",
+ "longitude": "36.2904060",
+ "heading": "223.60",
+ "speed": 0.575,
+ "distance": "0.02",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 10:57:24",
+ "updated_at": "2025-12-06 04:43:21",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000ILP÷?@@?G\u0018\u0006,%B@"
+ },
+ {
+ "driver_id": "bf826b8564ad185b2906",
+ "latitude": "33.5011990",
+ "longitude": "36.3021790",
+ "heading": "180.80",
+ "speed": 21.2,
+ "distance": "0.21",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 18:17:12",
+ "updated_at": "2025-12-06 03:37:04",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???I'?@@?D-ͭ&B@"
+ },
+ {
+ "driver_id": "48b8744490183e041556",
+ "latitude": "33.5149600",
+ "longitude": "36.2768390",
+ "heading": "195.00",
+ "speed": 27.8,
+ "distance": "102.97",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 10:05:58",
+ "updated_at": "2025-12-06 03:30:41",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?_?5??@@??uo#B@"
+ },
+ {
+ "driver_id": "4e6aefc595c7d875644e",
+ "latitude": "33.4888940",
+ "longitude": "36.3428690",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-16 12:07:12",
+ "updated_at": "2025-12-06 03:02:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\u001e\u0014??@@??!?+B@"
+ },
+ {
+ "driver_id": "bb28a52baae8faae9a2c",
+ "latitude": "36.1800800",
+ "longitude": "37.1400510",
+ "heading": "164.90",
+ "speed": 0,
+ "distance": "0.19",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 19:46:42",
+ "updated_at": "2025-12-06 02:20:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?T??\f\u0017B@?b?0?B@"
+ },
+ {
+ "driver_id": "0d4035115f8cc8c2c9d7",
+ "latitude": "33.5360000",
+ "longitude": "36.2937050",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 23:59:33",
+ "updated_at": "2025-12-06 02:03:32",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?S㥛?@@??\u001c ?%B@"
+ },
+ {
+ "driver_id": "f2b4f5ac61d23cbf3d38",
+ "latitude": "33.5267130",
+ "longitude": "36.3137680",
+ "heading": "346.00",
+ "speed": 15.3,
+ "distance": "9.02",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 00:44:07",
+ "updated_at": "2025-12-06 01:38:49",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000d??Tk?@@\u0003D??)(B@"
+ },
+ {
+ "driver_id": "1c781afb6ae99230e1e5",
+ "latitude": "33.5216740",
+ "longitude": "36.2872530",
+ "heading": "255.20",
+ "speed": 24.4,
+ "distance": "13.60",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 18:05:20",
+ "updated_at": "2025-12-06 01:28:34",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00005??6??@@?Vд?$B@"
+ },
+ {
+ "driver_id": "c62c40827f3a6f0e3e2c",
+ "latitude": "33.4839060",
+ "longitude": "36.3818140",
+ "heading": "289.00",
+ "speed": 1.073,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 05:41:11",
+ "updated_at": "2025-12-06 01:22:10",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000I+???@@Փ?G?0B@"
+ },
+ {
+ "driver_id": "a79ea47cc38b172e20a8",
+ "latitude": "33.5598300",
+ "longitude": "36.3682900",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 10:10:57",
+ "updated_at": "2025-12-06 01:13:04",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?j???@@иp $\/B@"
+ },
+ {
+ "driver_id": "88329d48f7b1e51723a4",
+ "latitude": "33.4859520",
+ "longitude": "36.3514440",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "31.31",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-05 00:50:02",
+ "updated_at": "2025-12-06 00:54:07",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??լ3?@@\u000e0?\u001d?,B@"
+ },
+ {
+ "driver_id": "243b2745973a144d489a",
+ "latitude": "33.5186180",
+ "longitude": "36.3104020",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 08:25:30",
+ "updated_at": "2025-12-06 00:46:28",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\u001a\u0013b?@@wN?@?'B@"
+ },
+ {
+ "driver_id": "1731e3f1297874acbe76",
+ "latitude": "33.4325640",
+ "longitude": "36.3557340",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "24.06",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 13:25:37",
+ "updated_at": "2025-12-06 00:45:33",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???A^?@@?\t\u0014??-B@"
+ },
+ {
+ "driver_id": "994cc5f3d68c18fee4e0",
+ "latitude": "33.5657070",
+ "longitude": "36.3971780",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.10",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 22:27:26",
+ "updated_at": "2025-12-06 00:31:24",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000$\u000fD\u0016i?@@hX???2B@"
+ },
+ {
+ "driver_id": "c9cae940932483b6d056",
+ "latitude": "33.5107190",
+ "longitude": "36.3184140",
+ "heading": "0.00",
+ "speed": 0.1,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 09:49:27",
+ "updated_at": "2025-12-06 00:12:48",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u00119}=_?@@UK:??(B@"
+ },
+ {
+ "driver_id": "94f7f767e6619396cf21",
+ "latitude": "33.4664340",
+ "longitude": "36.3312670",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.16",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 10:16:24",
+ "updated_at": "2025-12-06 00:09:20",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\t??\u001b??@@\u0001?f*B@"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/locations_live.json b/loction_server/siro/ride/locations_live.json
new file mode 100644
index 00000000..f87fc9c4
--- /dev/null
+++ b/loction_server/siro/ride/locations_live.json
@@ -0,0 +1,1074 @@
+{
+ "mode": "live",
+ "title": "مباشر (آخر 20 دقيقة)",
+ "last_updated": "2025-12-06 20:01:56",
+ "count": 82,
+ "drivers": [
+ {
+ "driver_id": "f1f6a5941ceea7aa6882",
+ "latitude": "33.5236550",
+ "longitude": "36.2706050",
+ "heading": "276.00",
+ "speed": 19.8,
+ "distance": "17.41",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 07:45:16",
+ "updated_at": "2025-12-06 20:01:54",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??? \u0007?@@*?D\/?\"B@"
+ },
+ {
+ "driver_id": "09f3efe2f63c6e7dfe09",
+ "latitude": "33.4745110",
+ "longitude": "36.3286000",
+ "heading": "202.90",
+ "speed": 0,
+ "distance": "0.63",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-01 18:08:37",
+ "updated_at": "2025-12-06 20:01:47",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?K?Ƽ?@@????\u000f*B@"
+ },
+ {
+ "driver_id": "b094051c974094398c1c",
+ "latitude": "33.5040080",
+ "longitude": "36.3284400",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "2.02",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-18 08:20:55",
+ "updated_at": "2025-12-06 20:01:42",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0010v?U??@@`YiR\n*B@"
+ },
+ {
+ "driver_id": "c35dce8c482255b224e1",
+ "latitude": "33.5252250",
+ "longitude": "36.2867980",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "12.09",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-12 08:27:00",
+ "updated_at": "2025-12-06 20:01:32",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000S\u0005??:?@@sG?˵$B@"
+ },
+ {
+ "driver_id": "42b422ab70528815b2be",
+ "latitude": "33.5629340",
+ "longitude": "36.2234050",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "117.78",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-16 10:50:08",
+ "updated_at": "2025-12-06 20:01:28",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000:?8\u000e?@@?a???\u001cB@"
+ },
+ {
+ "driver_id": "8cc49645f179fb4963b5",
+ "latitude": "33.5012390",
+ "longitude": "36.3211520",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "59.75",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 13:19:44",
+ "updated_at": "2025-12-06 20:01:22",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000h=|?(?@@
\u001b)B@"
+ },
+ {
+ "driver_id": "02d482efab7fd68eff61",
+ "latitude": "36.2050880",
+ "longitude": "37.1120370",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-04 19:48:45",
+ "updated_at": "2025-12-06 20:01:08",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?f?R@\u001aB@?xy:W?B@"
+ },
+ {
+ "driver_id": "b9f86195500041ebb118",
+ "latitude": "33.5315450",
+ "longitude": "36.2397480",
+ "heading": "107.00",
+ "speed": 29.4,
+ "distance": "5.89",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 12:18:08",
+ "updated_at": "2025-12-06 20:01:07",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0019???\t?@@\u0005??\u000f?\u001eB@"
+ },
+ {
+ "driver_id": "96815ed1db5b263dae50",
+ "latitude": "33.5045750",
+ "longitude": "36.2440370",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "73.52",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-28 19:57:06",
+ "updated_at": "2025-12-06 20:00:53",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?????@@?\u0001??<\u001fB@"
+ },
+ {
+ "driver_id": "bae4e290a6c23f1f449f",
+ "latitude": "33.5462040",
+ "longitude": "36.3347720",
+ "heading": "68.00",
+ "speed": 5.4,
+ "distance": "5.53",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 14:23:20",
+ "updated_at": "2025-12-06 20:00:47",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?x>\u0003??@@??\u0013??*B@"
+ },
+ {
+ "driver_id": "9b5df1af05117f04323e",
+ "latitude": "33.5050840",
+ "longitude": "36.2458420",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 11:57:52",
+ "updated_at": "2025-12-06 20:00:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?ݮ???@@??*?w\u001fB@"
+ },
+ {
+ "driver_id": "6fa45ad3119ea23b7c0d",
+ "latitude": "33.4809640",
+ "longitude": "36.2965950",
+ "heading": "52.00",
+ "speed": 0.69,
+ "distance": "8.54",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 10:18:31",
+ "updated_at": "2025-12-06 20:00:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?Fu:??@@\u001d?0??%B@"
+ },
+ {
+ "driver_id": "b4eb6f4a7b6a99aa7d5c",
+ "latitude": "34.7340120",
+ "longitude": "36.7211340",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 11:26:20",
+ "updated_at": "2025-12-06 20:00:31",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?o?\u001a?]A@O\u0004q\u001eN\\B@"
+ },
+ {
+ "driver_id": "ef660f2e6a9ce671488a",
+ "latitude": "33.5101700",
+ "longitude": "36.2788840",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 18:47:46",
+ "updated_at": "2025-12-06 20:00:16",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000>?$@M?@@W??x?#B@"
+ },
+ {
+ "driver_id": "fd3c6a020f0df4d96c51",
+ "latitude": "33.5008860",
+ "longitude": "36.3052850",
+ "heading": "242.70",
+ "speed": 31.9,
+ "distance": "83.80",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 20:21:30",
+ "updated_at": "2025-12-06 20:00:16",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001b?N\b\u001d?@@?z1?\u0013'B@"
+ },
+ {
+ "driver_id": "6398a0b9f06aed86d727",
+ "latitude": "33.5692630",
+ "longitude": "36.2318970",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-26 19:01:22",
+ "updated_at": "2025-12-06 19:59:34",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000S?'???@@\/?\u0007ͮ\u001dB@"
+ },
+ {
+ "driver_id": "a83d509aa7dd136b453d",
+ "latitude": "33.5320980",
+ "longitude": "36.3610560",
+ "heading": "66.00",
+ "speed": 29.7,
+ "distance": "43.93",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 12:10:02",
+ "updated_at": "2025-12-06 19:59:24",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000-\"??\u001b?@@%\u0003@\u00157.B@"
+ },
+ {
+ "driver_id": "e8ecdfaf9c7f23e60fb5",
+ "latitude": "33.5364310",
+ "longitude": "36.3032720",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 13:44:37",
+ "updated_at": "2025-12-06 19:58:59",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??`ũ?@@q???&B@"
+ },
+ {
+ "driver_id": "d689f7a02e1c41ec1ddb",
+ "latitude": "33.4984560",
+ "longitude": "36.2508200",
+ "heading": "59.00",
+ "speed": 24,
+ "distance": "38.31",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 10:33:17",
+ "updated_at": "2025-12-06 19:58:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000[??gͿ@@c???\u001a B@"
+ },
+ {
+ "driver_id": "1ef563908f031c999ac3",
+ "latitude": "33.6936040",
+ "longitude": "36.3755020",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "215.89",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-07 14:54:23",
+ "updated_at": "2025-12-06 19:58:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\/\u0010\u0004??@@??\u0014s\u00100B@"
+ },
+ {
+ "driver_id": "3c704fe7aa1f129686c3",
+ "latitude": "35.1308330",
+ "longitude": "36.7544440",
+ "heading": "245.10",
+ "speed": 16.3,
+ "distance": "5.18",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 10:47:19",
+ "updated_at": "2025-12-06 19:58:13",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000i\u001e?\"??A@?T???`B@"
+ },
+ {
+ "driver_id": "605bc5d78adf0cd92157",
+ "latitude": "33.4218050",
+ "longitude": "36.1466830",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "9.34",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 08:36:07",
+ "updated_at": "2025-12-06 19:57:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0007%̴??@@??\/??\u0012B@"
+ },
+ {
+ "driver_id": "5eb29c514f0968d5a02a",
+ "latitude": "36.1995410",
+ "longitude": "37.1369350",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 13:29:40",
+ "updated_at": "2025-12-06 19:57:39",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0007?:??\u0019B@?V\t\u0016??B@"
+ },
+ {
+ "driver_id": "7c90a80341e683a29789",
+ "latitude": "33.5341370",
+ "longitude": "36.3026020",
+ "heading": "90.00",
+ "speed": 15.6,
+ "distance": "2.49",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-26 12:19:11",
+ "updated_at": "2025-12-06 19:57:08",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?J?^?@@#ڎ??&B@"
+ },
+ {
+ "driver_id": "65965c104f9e37aba687",
+ "latitude": "33.4849120",
+ "longitude": "36.2959550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 11:53:07",
+ "updated_at": "2025-12-06 19:56:35",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u000f???\u0011?@@9\u000b{??%B@"
+ },
+ {
+ "driver_id": "8aab8ff92c2f64fe6a41",
+ "latitude": "33.5360260",
+ "longitude": "36.3058800",
+ "heading": "29.00",
+ "speed": 28.4,
+ "distance": "95.89",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-16 17:48:31",
+ "updated_at": "2025-12-06 19:50:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000!????@@\u0010@j\u0013''B@"
+ },
+ {
+ "driver_id": "583151e51dc980730494",
+ "latitude": "33.5148010",
+ "longitude": "36.2914550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 11:24:44",
+ "updated_at": "2025-12-06 19:48:47",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000[y????@@???eN%B@"
+ },
+ {
+ "driver_id": "44bd789caf01f3ac6053",
+ "latitude": "33.5596130",
+ "longitude": "36.3239080",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 10:12:58",
+ "updated_at": "2025-12-06 19:46:36",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000N?\u0016f??@@?t=?u)B@"
+ },
+ {
+ "driver_id": "4738a3b984b40929552a",
+ "latitude": "33.5201560",
+ "longitude": "36.3098630",
+ "heading": "278.00",
+ "speed": 24.5,
+ "distance": "48.95",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 14:20:27",
+ "updated_at": "2025-12-06 19:46:20",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?h?x??@@Ǟ=??'B@"
+ },
+ {
+ "driver_id": "b1b69ecaacdd786ed6fb",
+ "latitude": "33.5171960",
+ "longitude": "36.2904250",
+ "heading": "353.00",
+ "speed": 0.6,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 17:10:39",
+ "updated_at": "2025-12-06 19:42:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?πz3?@@lxz?,%B@"
+ },
+ {
+ "driver_id": "1bdab3efe5ca91c59db7",
+ "latitude": "33.5528590",
+ "longitude": "36.3233590",
+ "heading": "42.00",
+ "speed": 10.7,
+ "distance": "93.94",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 07:31:15",
+ "updated_at": "2025-12-06 19:41:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000N&n\u0015??@@\u0003???c)B@"
+ },
+ {
+ "driver_id": "2a2e331de0868a164b0c",
+ "latitude": "36.2075040",
+ "longitude": "37.1658510",
+ "heading": "172.00",
+ "speed": 19.4,
+ "distance": "26.69",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 09:40:03",
+ "updated_at": "2025-12-06 19:40:46",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0004?}?\u001aB@$?\u0006?:?B@"
+ },
+ {
+ "driver_id": "ca60f0f65d7d6de23e5c",
+ "latitude": "36.2023130",
+ "longitude": "37.1126720",
+ "heading": "346.00",
+ "speed": 19.9,
+ "distance": "12.31",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 09:36:34",
+ "updated_at": "2025-12-06 19:35:05",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001fGsd?\u0019B@d?=\tl?B@"
+ },
+ {
+ "driver_id": "eeca8786bec7ff82ab91",
+ "latitude": "33.5377190",
+ "longitude": "36.2971080",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "4.14",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 14:41:59",
+ "updated_at": "2025-12-06 19:34:24",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u000b?????@@????\u0007&B@"
+ },
+ {
+ "driver_id": "ab180e356874c1d98850",
+ "latitude": "33.4844750",
+ "longitude": "36.3151920",
+ "heading": "49.00",
+ "speed": 1.8,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-04 08:52:39",
+ "updated_at": "2025-12-06 19:34:23",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000d]?F\u0003?@@??!6X(B@"
+ },
+ {
+ "driver_id": "9cbf649351a6e59c3944",
+ "latitude": "33.5337870",
+ "longitude": "36.2968840",
+ "heading": "69.50",
+ "speed": 6.7,
+ "distance": "101.48",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 03:45:03",
+ "updated_at": "2025-12-06 19:33:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0003?!S?@@SZK\u0000&B@"
+ },
+ {
+ "driver_id": "bd648f8f81d7afde9c6f",
+ "latitude": "33.5848520",
+ "longitude": "36.3656790",
+ "heading": "349.60",
+ "speed": 21.7,
+ "distance": "106.04",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 09:54:13",
+ "updated_at": "2025-12-06 19:29:37",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0006?*n??@@??ȑ?.B@"
+ },
+ {
+ "driver_id": "53048279340f0c0930cb",
+ "latitude": "33.5511830",
+ "longitude": "36.2117810",
+ "heading": "38.20",
+ "speed": 19.5,
+ "distance": "78.98",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 12:04:51",
+ "updated_at": "2025-12-06 19:27:31",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000;?\u001f*??@@\u0004uʣ\u001b\u001bB@"
+ },
+ {
+ "driver_id": "74d40382580cc085d107",
+ "latitude": "33.4199890",
+ "longitude": "36.3538050",
+ "heading": "85.30",
+ "speed": 1.9729999999999999,
+ "distance": "3.17",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 10:13:42",
+ "updated_at": "2025-12-06 19:27:06",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0002?\u00153µ@@?\u0014t{I-B@"
+ },
+ {
+ "driver_id": "5af8271bfd5b5bd7033c",
+ "latitude": "33.4847310",
+ "longitude": "36.3514880",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-28 17:44:48",
+ "updated_at": "2025-12-06 19:26:51",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?-X?\u000b?@@?w\f??,B@"
+ },
+ {
+ "driver_id": "08ec60fec0db11ab065e",
+ "latitude": "36.2149150",
+ "longitude": "37.1586210",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-03 12:14:06",
+ "updated_at": "2025-12-06 19:26:29",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?5?U?\u001bB@??c?M?B@"
+ },
+ {
+ "driver_id": "e864c3bbe2fa7179a1ba",
+ "latitude": "35.1444440",
+ "longitude": "36.7716100",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-05 22:59:42",
+ "updated_at": "2025-12-06 19:19:38",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000=\r\u0018$}?A@\u001f??\u001d?bB@"
+ },
+ {
+ "driver_id": "eed6cf591bc0c14a70fc",
+ "latitude": "36.2072480",
+ "longitude": "37.1069370",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 10:01:07",
+ "updated_at": "2025-12-06 19:18:55",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\u0014;\u001a?\u001aB@?ݒ\u001c??B@"
+ },
+ {
+ "driver_id": "5bfc4ab464d369b8b251",
+ "latitude": "33.4989350",
+ "longitude": "36.2460500",
+ "heading": "296.00",
+ "speed": 11.8,
+ "distance": "76.08",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-15 10:05:28",
+ "updated_at": "2025-12-06 19:18:41",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00006?!\u001aݿ@@$???~\u001fB@"
+ },
+ {
+ "driver_id": "b19cea00f537006cba32",
+ "latitude": "33.5442600",
+ "longitude": "36.1928100",
+ "heading": "301.00",
+ "speed": 38.2,
+ "distance": "82.36",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 08:42:36",
+ "updated_at": "2025-12-06 19:15:24",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?B?O??@@?+???\u0018B@"
+ },
+ {
+ "driver_id": "b984a7ae6a1198aaf1b8",
+ "latitude": "33.5498130",
+ "longitude": "36.3212150",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-10 21:05:44",
+ "updated_at": "2025-12-06 19:14:21",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00004??E`?@@\t???\u001d)B@"
+ },
+ {
+ "driver_id": "9cc5950f6b29f5a031fb",
+ "latitude": "34.7082120",
+ "longitude": "36.7076300",
+ "heading": "292.70",
+ "speed": 0.898,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-25 16:22:23",
+ "updated_at": "2025-12-06 19:06:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000@Qٰ?ZA@?խ??ZB@"
+ },
+ {
+ "driver_id": "7c76ba913e048f23f843",
+ "latitude": "33.5371720",
+ "longitude": "36.2412550",
+ "heading": "321.00",
+ "speed": 12,
+ "distance": "26.10",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-09 09:07:02",
+ "updated_at": "2025-12-06 19:03:22",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?)V\r??@@??q?\u001eB@"
+ },
+ {
+ "driver_id": "645f409b0636f6fa1252",
+ "latitude": "33.5108220",
+ "longitude": "36.2754120",
+ "heading": "277.00",
+ "speed": 33.9,
+ "distance": "3.99",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 21:45:03",
+ "updated_at": "2025-12-06 19:02:33",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?\t??b?@@?vN?@#B@"
+ },
+ {
+ "driver_id": "45889ade20db80bbc087",
+ "latitude": "33.4458810",
+ "longitude": "36.0830550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "124.42",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-08 05:10:11",
+ "updated_at": "2025-12-06 19:00:44",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u00002t?\u0012?@@xb?\nB@"
+ },
+ {
+ "driver_id": "81c3995aceca18b97541",
+ "latitude": "33.5189400",
+ "longitude": "36.3232270",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 10:21:40",
+ "updated_at": "2025-12-06 19:00:15",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\nK(B@"
+ },
+ {
+ "driver_id": "c335dc9138960670f6dc",
+ "latitude": "34.7423480",
+ "longitude": "36.7161970",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 08:58:16",
+ "updated_at": "2025-12-06 18:32:28",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000! _B\u0005_A@%??W?[B@"
+ },
+ {
+ "driver_id": "f5ca5c9eabc931536e08",
+ "latitude": "36.2161800",
+ "longitude": "37.0996050",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 10:46:58",
+ "updated_at": "2025-12-06 18:27:20",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000O\u0006Gɫ\u001bB@P?Lۿ?B@"
+ },
+ {
+ "driver_id": "126face48d0c1fca88d1",
+ "latitude": "34.7236770",
+ "longitude": "36.7016560",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-02 14:22:48",
+ "updated_at": "2025-12-06 18:26:28",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u0007?r?\\A@f?\"??YB@"
+ },
+ {
+ "driver_id": "c8d1485e5dd6b8484bb4",
+ "latitude": "33.5377250",
+ "longitude": "36.2000230",
+ "heading": "115.00",
+ "speed": 3.6,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-04 11:12:22",
+ "updated_at": "2025-12-06 18:25:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?<,??@@R??Z?\u0019B@"
+ },
+ {
+ "driver_id": "3eb6243c7c9de43080b7",
+ "latitude": "35.5195620",
+ "longitude": "35.7989100",
+ "heading": "90.00",
+ "speed": 28,
+ "distance": "31.39",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-13 08:42:28",
+ "updated_at": "2025-12-06 18:21:56",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000G\u001f?\u0001??A@C9ѮB?A@"
+ },
+ {
+ "driver_id": "f33b6192212bbd06393e",
+ "latitude": "36.1943630",
+ "longitude": "37.1222500",
+ "heading": "6.30",
+ "speed": 1.166,
+ "distance": "259.90",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 09:30:43",
+ "updated_at": "2025-12-06 18:21:50",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?F\u0004??\u0018B@??S㥏B@"
+ },
+ {
+ "driver_id": "d3b2c333f66d5b8bac31",
+ "latitude": "35.5074980",
+ "longitude": "35.7748310",
+ "heading": "355.80",
+ "speed": 1.291,
+ "distance": "0.01",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-30 12:22:35",
+ "updated_at": "2025-12-06 18:18:47",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?dȱ??A@?v??-?A@"
+ },
+ {
+ "driver_id": "84526a946ab104acc806",
+ "latitude": "33.5198330",
+ "longitude": "36.2882370",
+ "heading": "47.00",
+ "speed": 25.6,
+ "distance": "1.11",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-21 14:04:37",
+ "updated_at": "2025-12-06 18:13:09",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000?0C??@@??4??$B@"
+ },
+ {
+ "driver_id": "1376afac594c3f2ae601",
+ "latitude": "35.3461500",
+ "longitude": "35.9474690",
+ "heading": "155.50",
+ "speed": 0,
+ "distance": "0.03",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-23 10:00:05",
+ "updated_at": "2025-12-06 18:12:18",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000U???N?A@?|\b?F?A@"
+ },
+ {
+ "driver_id": "55990e379c52520b6c7a",
+ "latitude": "33.5148080",
+ "longitude": "36.3189570",
+ "heading": "220.00",
+ "speed": 27.2,
+ "distance": "1.46",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 09:16:56",
+ "updated_at": "2025-12-06 18:09:53",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u000e܁:??@@F?=??(B@"
+ },
+ {
+ "driver_id": "1031b1b342a9a9e20b95",
+ "latitude": "33.4515500",
+ "longitude": "36.2376890",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-13 09:40:09",
+ "updated_at": "2025-12-06 18:08:48",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000 A?c̹@@:?ؗl\u001eB@"
+ },
+ {
+ "driver_id": "9d72ed7a604c81631de4",
+ "latitude": "33.5327130",
+ "longitude": "36.1798670",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-27 13:00:40",
+ "updated_at": "2025-12-06 18:07:41",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000????\/?@@?P??\u0005\u0017B@"
+ },
+ {
+ "driver_id": "092df73b4d8a8e76ab71",
+ "latitude": "33.5110290",
+ "longitude": "36.2892030",
+ "heading": "356.20",
+ "speed": 25.3,
+ "distance": "21.95",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-17 12:24:03",
+ "updated_at": "2025-12-06 18:04:13",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000_'?ei?@@?s??\u0004%B@"
+ },
+ {
+ "driver_id": "34ccef720239f27febf7",
+ "latitude": "36.2218980",
+ "longitude": "37.1495930",
+ "heading": "35.00",
+ "speed": 8.4,
+ "distance": "34.62",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 07:25:32",
+ "updated_at": "2025-12-06 18:03:14",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001f?V'g\u001cB@?Z\t?%?B@"
+ },
+ {
+ "driver_id": "25c2194c7dd77a9cb9ca",
+ "latitude": "33.5324450",
+ "longitude": "36.3031400",
+ "heading": "8.00",
+ "speed": 38,
+ "distance": "27.83",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-19 09:03:51",
+ "updated_at": "2025-12-06 17:57:34",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??b('?@@\u0002\u000e?J?&B@"
+ },
+ {
+ "driver_id": "ff2ae874fb90ac2656a9",
+ "latitude": "33.5272620",
+ "longitude": "36.2116550",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "19.16",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-09 10:40:56",
+ "updated_at": "2025-12-06 17:53:38",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u000076;R}?@@w?ӂ\u0017\u001bB@"
+ },
+ {
+ "driver_id": "ef0a1e080246d40b293d",
+ "latitude": "33.4845110",
+ "longitude": "36.2115830",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "15.43",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-03 19:49:13",
+ "updated_at": "2025-12-06 17:53:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000???t\u0004?@@ݱ?&\u0015\u001bB@"
+ },
+ {
+ "driver_id": "0cf716369949752bc9e6",
+ "latitude": "33.5253200",
+ "longitude": "36.2846160",
+ "heading": "236.00",
+ "speed": 1.339,
+ "distance": "0.47",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-24 10:44:02",
+ "updated_at": "2025-12-06 17:50:40",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000????=?@@??\rLn$B@"
+ },
+ {
+ "driver_id": "5b23b4ca70011211544c",
+ "latitude": "33.5414120",
+ "longitude": "36.1993570",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 12:29:51",
+ "updated_at": "2025-12-06 17:48:23",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??\b?L?@@E????\u0019B@"
+ },
+ {
+ "driver_id": "5eef6ca68ace2c832185",
+ "latitude": "33.5356860",
+ "longitude": "36.3022850",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "4.73",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-12-06 13:10:35",
+ "updated_at": "2025-12-06 17:47:12",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000hv?[??@@\"?^F?&B@"
+ },
+ {
+ "driver_id": "dd852ec6c0786229a93f",
+ "latitude": "33.5790780",
+ "longitude": "36.2984270",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 11:18:55",
+ "updated_at": "2025-12-06 17:45:52",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000??W:\u001f?@@'?\u001e?2&B@"
+ },
+ {
+ "driver_id": "f7859c2ecf59fea95c59",
+ "latitude": "33.5013910",
+ "longitude": "36.3537380",
+ "heading": "0.00",
+ "speed": 0,
+ "distance": "0.00",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-22 12:41:58",
+ "updated_at": "2025-12-06 17:44:03",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000\u001e???-?@@\u001d?jIG-B@"
+ },
+ {
+ "driver_id": "448e66f07f9371b8f615",
+ "latitude": "36.1884020",
+ "longitude": "37.1741130",
+ "heading": "255.00",
+ "speed": 27.2,
+ "distance": "9.03",
+ "status": "off",
+ "carType": "Awfar",
+ "created_at": "2025-11-29 09:30:14",
+ "updated_at": "2025-12-06 17:42:36",
+ "location_point": "?\u0010\u0000\u0000\u0001\u0001\u0000\u0000\u0000!@??\u001d\u0018B@{g?UI?B@"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/loction_server/siro/ride/update_locations_web_app.php b/loction_server/siro/ride/update_locations_web_app.php
new file mode 100755
index 00000000..98674595
--- /dev/null
+++ b/loction_server/siro/ride/update_locations_web_app.php
@@ -0,0 +1,88 @@
+= NOW() - INTERVAL 20 MINUTE";
+ $title = "مباشر (آخر 20 دقيقة)";
+}
+
+$savePath = __DIR__ . '/' . $fileName;
+
+// دالة تنظيف النصوص العربية وإصلاح الترميز
+function utf8ize($d) {
+ if (is_array($d)) {
+ foreach ($d as $k => $v) { $d[$k] = utf8ize($v); }
+ } else if (is_string ($d)) {
+ return mb_convert_encoding($d, 'UTF-8', 'UTF-8');
+ }
+ return $d;
+}
+
+try {
+ // إجبار قاعدة البيانات على ترميز UTF-8
+ if(isset($con)) { $con->exec("set names utf8mb4"); }
+
+ // تنفيذ الاستعلام
+ $sql = "SELECT * FROM `car_locations` WHERE $condition ORDER BY updated_at DESC";
+ $stmt = $con->prepare($sql);
+ $stmt->execute();
+ $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+ // تنظيف البيانات
+ $cleanRows = utf8ize($rows);
+
+ // تجهيز البيانات للحفظ
+ $outputData = [
+ 'mode' => $mode,
+ 'title' => $title,
+ 'last_updated' => date('Y-m-d H:i:s'),
+ 'count' => count($cleanRows),
+ 'drivers' => $cleanRows
+ ];
+
+ // تحويل إلى JSON
+ $jsonContent = json_encode($outputData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
+
+ if ($jsonContent === false) {
+ die("خطأ في تكوين JSON: " . json_last_error_msg());
+ }
+
+ // حفظ الملف
+ if (file_put_contents($savePath, $jsonContent) !== false) {
+ echo "";
+ echo "
✅ تم التحديث بنجاح!
";
+ echo "
الوضع: $title
";
+ echo "
اسم الملف: $fileName
";
+ echo "
عدد السائقين: " . count($cleanRows) . "
";
+ echo "
";
+ } else {
+ die("فشل الكتابة في الملف. تأكد من صلاحيات المجلد.");
+ }
+
+} catch (PDOException $e) {
+ die("خطأ قاعدة بيانات: " . $e->getMessage());
+}
+?>
\ No newline at end of file
diff --git a/loction_server/test_order.php b/loction_server/test_order.php
new file mode 100644
index 00000000..e6edca50
--- /dev/null
+++ b/loction_server/test_order.php
@@ -0,0 +1,87 @@
+ 'dispatch_order',
+ 'drivers_ids' => json_encode([$targetDriverId]),
+ 'payload' => $finalPayload // 🔥 هنا نرسل المصفوفة وليس كائناً
+];
+
+// إرسال الطلب
+$ch = curl_init($socketUrl);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($ch, CURLOPT_POST, true);
+curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
+curl_setopt($ch, CURLOPT_HTTPHEADER, [
+ "x-internal-key: $INTERNAL_KEY"
+]);
+
+$response = curl_exec($ch);
+$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+curl_close($ch);
+
+echo "Response Code: $httpCode\n";
+if ($response == 'Dispatched') {
+ echo "✅ Success! Order List sent to driver.\n";
+} else {
+ echo "❌ Failed: $response\n";
+}
+?>
\ No newline at end of file
diff --git a/loction_server/test_ride_taken.php b/loction_server/test_ride_taken.php
new file mode 100755
index 00000000..00b41a8f
--- /dev/null
+++ b/loction_server/test_ride_taken.php
@@ -0,0 +1,43 @@
+ 'simulate_ride_taken',
+ 'ride_id' => $rideId,
+ 'taken_by_driver_id' => $fakeDriverId
+];
+
+// إرسال الطلب عبر cURL
+$ch = curl_init($socketUrl);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($ch, CURLOPT_POST, true);
+curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
+curl_setopt($ch, CURLOPT_HTTPHEADER, [
+ "x-internal-key: $internalKey"
+]);
+
+$response = curl_exec($ch);
+$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+curl_close($ch);
+
+echo "Simulating Ride Taken...\n";
+echo "Response: $response\n";
+
+if ($response == 'Ride Taken Event Broadcasted') {
+ echo "✅ Success! All drivers should see 'Ride Taken' now.\n";
+} else {
+ echo "❌ Failed.\n";
+}
+?>
\ No newline at end of file