aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Services/OtpService.cs
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2026-02-11 17:56:31 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2026-02-11 17:56:37 +0100
commit06c873557d7842b015a4eb3e7ed02e27a6177824 (patch)
tree93e96741908ebf3a7e737da510b2bf59c251928a /src/Enmarcha.Backend/Services/OtpService.cs
parentf977f0e3ec27cf0b26e4c96bebdfec2073c59c5d (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.cs18
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("\"", "");