diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2026-02-11 17:56:31 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2026-02-11 17:56:37 +0100 |
| commit | 06c873557d7842b015a4eb3e7ed02e27a6177824 (patch) | |
| tree | 93e96741908ebf3a7e737da510b2bf59c251928a /src/Enmarcha.Backend/Services/OtpService.cs | |
| parent | f977f0e3ec27cf0b26e4c96bebdfec2073c59c5d (diff) | |
fix: Normalize headsign handling and improve destination trimming in arrival processing
Diffstat (limited to 'src/Enmarcha.Backend/Services/OtpService.cs')
| -rw-r--r-- | src/Enmarcha.Backend/Services/OtpService.cs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/Enmarcha.Backend/Services/OtpService.cs b/src/Enmarcha.Backend/Services/OtpService.cs index 07c4d81..a01079f 100644 --- a/src/Enmarcha.Backend/Services/OtpService.cs +++ b/src/Enmarcha.Backend/Services/OtpService.cs @@ -303,6 +303,8 @@ public class OtpService var shortName = _feedService.NormalizeRouteShortName(feedId, leg.Route?.ShortName ?? string.Empty); var headsign = leg.Headsign; + var headsignTrimmed = headsign?.Trim(); + if (feedId == "vitrasa") { headsign = headsign?.Replace("*", ""); @@ -313,9 +315,21 @@ public class OtpService switch (shortName) { - case "A" when headsign != null && headsign.StartsWith("\"1\""): + case "A" when headsignTrimmed != null && + (headsignTrimmed.StartsWith("\"1\"", StringComparison.Ordinal) || + (headsignTrimmed.Length >= 1 && headsignTrimmed[0] == '1' && + (headsignTrimmed.Length == 1 || !char.IsDigit(headsignTrimmed[1])))): shortName = "A1"; - headsign = headsign.Replace("\"1\"", ""); + if (headsignTrimmed.StartsWith("\"1\"", StringComparison.Ordinal)) + { + headsign = headsignTrimmed[3..]; + } + else + { + headsign = headsignTrimmed[1..]; + } + + headsign = headsign.TrimStart(' ', '-', '.', ':'); break; case "6": headsign = headsign?.Replace("\"", ""); |
