From 06c873557d7842b015a4eb3e7ed02e27a6177824 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Wed, 11 Feb 2026 17:56:31 +0100 Subject: fix: Normalize headsign handling and improve destination trimming in arrival processing --- src/Enmarcha.Backend/Services/OtpService.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/Enmarcha.Backend/Services/OtpService.cs') 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("\"", ""); -- cgit v1.3