prepare("SELECT id, status, main_driver_id FROM transit_drivers WHERE id=? AND org_id=? LIMIT 1"); $chk->execute([$driverId, $transit_org_id]); $driver = $chk->fetch(); if (!$driver) jsonError('Driver not found or access denied', 404); // إعادة التفعيل غير ممكنة إلا لسائق سبق تفعيله عبر الدعوة (status كان suspended) if ($action === 'activate' && $driver['status'] !== 'suspended') { jsonError('Only a suspended driver can be reactivated', 409); } $newStatus = $action === 'suspend' ? 'suspended' : 'active'; $transit_con->prepare("UPDATE transit_drivers SET status=? WHERE id=?")->execute([$newStatus, $driverId]); // إبطال كاش السائق فوراً — عند التعليق يجب أن تُرفض رحلاته في الطلب التالي مباشرة if (!empty($driver['main_driver_id'])) { transitInvalidateDriverCache((string)$driver['main_driver_id']); } appLog("[TRANSIT][DRIVER][suspend] driver #{$driverId} org#{$transit_org_id} → {$newStatus}"); jsonSuccess(['driver_id' => $driverId, 'status' => $newStatus]);