prepare( "SELECT id FROM transit_drivers WHERE main_driver_id=? AND status='active' LIMIT 1" ); $driverRow->execute([(string)$transit_user_id]); $driverRec = $driverRow->fetch(); if (!$driverRec) jsonError('Driver not found or not active', 403); $driverId = (int)$driverRec['id']; $st = $transit_con->prepare( "SELECT t.id, t.route_id, r.name_ar AS route_name FROM transit_trips t JOIN transit_routes r ON r.id=t.route_id WHERE t.id=? AND t.driver_id=? AND t.status='started' LIMIT 1" ); $st->execute([$tripId, $driverId]); $trip = $st->fetch(); if (!$trip) jsonError('Active trip not found', 404); $transit_con->prepare( "UPDATE transit_trips SET delay_minutes=?, delay_reason=?, updated_at=NOW() WHERE id=?" )->execute([$delay, $reason, $tripId]); transitSendTopicNotification( transitRouteTopic((int)$trip['route_id']), 'تأخير في الباص', 'خط ' . $trip['route_name'] . ' متأخر ' . $delay . ' دقيقة' . ($reason ? " — $reason" : ''), ['type' => 'transit_delay', 'trip_id' => (string)$tripId, 'delay' => (string)$delay] ); jsonSuccess(['delay_minutes' => $delay], 'Delay reported and passengers notified');