encryptData($phone); $st = $transit_con->prepare( "SELECT id, org_id, name, status FROM transit_drivers WHERE invite_token=? AND phone=? LIMIT 1" ); $st->execute([$inviteToken, $phoneEnc]); $driver = $st->fetch(); if (!$driver) jsonError('Invalid invite token or phone mismatch', 404); if ($driver['status'] === 'active') jsonError('Driver already activated', 409); if ($driver['status'] === 'suspended') jsonError('Account suspended', 403); $transit_con->prepare( "UPDATE transit_drivers SET status='active', activated_at=NOW(), invite_token=NULL WHERE id=?" )->execute([$driver['id']]); jsonSuccess([ 'driver_id' => (int)$driver['id'], 'org_id' => (int)$driver['org_id'], 'name' => $driver['name'], 'mode' => 'bus', ], 'Driver activated. Welcome to مواصلاتي!');