prepare("SELECT id, org_id, name_ar, status FROM transit_routes WHERE id=? LIMIT 1"); $st->execute([$routeId]); $route = $st->fetch(); if (!$route) jsonError('Route not found', 404); $statusMap = [ 'approve' => 'active', 'suspend' => 'suspended', 'reject' => 'rejected', ]; $newStatus = $statusMap[$action]; if ($route['status'] === $newStatus) { jsonError("Route is already in status: {$newStatus}", 409); } $transit_con->prepare( "UPDATE transit_routes SET status=?, approved_by=?, approved_at=NOW(), updated_at=NOW() WHERE id=?" )->execute([$newStatus, (string)$user_id, $routeId]); appLog("[TRANSIT][ROUTE] route #{$routeId} org#{$route['org_id']} → {$newStatus} by admin #{$user_id}", 'INFO'); // كتابة في Redis للسوكيت: transit:route_org:{routeId} → org_id // يُستخدم في passenger_socket لتحقق العضوية if (isset($redisLocation) && $redisLocation) { $redisLocation->set("transit:route_org:{$routeId}", (string)$route['org_id']); } jsonSuccess([ 'route_id' => $routeId, 'route_name' => $route['name_ar'], 'new_status' => $newStatus, ], "Route {$action}d successfully");