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/Processors/FeedConfigProcessor.cs | |
| parent | f977f0e3ec27cf0b26e4c96bebdfec2073c59c5d (diff) | |
fix: Normalize headsign handling and improve destination trimming in arrival processing
Diffstat (limited to 'src/Enmarcha.Backend/Services/Processors/FeedConfigProcessor.cs')
| -rw-r--r-- | src/Enmarcha.Backend/Services/Processors/FeedConfigProcessor.cs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/Enmarcha.Backend/Services/Processors/FeedConfigProcessor.cs b/src/Enmarcha.Backend/Services/Processors/FeedConfigProcessor.cs index 2d5f5d9..562b8f1 100644 --- a/src/Enmarcha.Backend/Services/Processors/FeedConfigProcessor.cs +++ b/src/Enmarcha.Backend/Services/Processors/FeedConfigProcessor.cs @@ -47,6 +47,8 @@ public class FeedConfigProcessor : IArrivalsProcessor { arrival.Headsign.Destination = arrival.Headsign.Destination.Replace("*", ""); + var destinationTrimmed = arrival.Headsign.Destination.TrimStart(); + if (arrival.Headsign.Destination == "FORA DE SERVIZO.G.B.") { arrival.Headsign.Destination = "García Barbón, 7 (fora de servizo)"; @@ -55,9 +57,21 @@ public class FeedConfigProcessor : IArrivalsProcessor switch (arrival.Route.ShortName) { - case "A" when arrival.Headsign.Destination.StartsWith("\"1\""): + case "A" when destinationTrimmed.StartsWith("\"1\"", StringComparison.Ordinal) || + (destinationTrimmed.Length >= 1 && destinationTrimmed[0] == '1' && + (destinationTrimmed.Length == 1 || !char.IsDigit(destinationTrimmed[1]))): arrival.Route.ShortName = "A1"; - arrival.Headsign.Destination = arrival.Headsign.Destination.Replace("\"1\"", ""); + // NormalizeStopName() removes quotes for Vitrasa, so handle both "\"1\"" and leading "1". + if (destinationTrimmed.StartsWith("\"1\"", StringComparison.Ordinal)) + { + destinationTrimmed = destinationTrimmed.Substring(3); + } + else + { + destinationTrimmed = destinationTrimmed.Substring(1); + } + + arrival.Headsign.Destination = destinationTrimmed.TrimStart(' ', '-', '.', ':'); break; case "6": arrival.Headsign.Destination = arrival.Headsign.Destination.Replace("\"", ""); |
