summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2026-03-24 21:01:38 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2026-03-24 21:01:38 +0100
commit6671f34a2503cd29aa3bf15216f3a0e2c7af73cf (patch)
treedae6a15f6f6c4c9abcc518d604d835d9021f4fcf
parentbae7939f4cf1a6c23b9ac1aaae898911f776b94c (diff)
Enhance NextStopsProcessor to include stop names in marquee and improve stop description parsing
-rw-r--r--src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs b/src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs
index 517faae..1db215b 100644
--- a/src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs
+++ b/src/Enmarcha.Backend/Services/Processors/NextStopsProcessor.cs
@@ -31,7 +31,7 @@ public class NextStopsProcessor : IArrivalsProcessor
arrival.NextStops = otpArrival.Trip.Stoptimes
.Where(s => s.ScheduledDeparture > currentStopDeparture)
.OrderBy(s => s.ScheduledDeparture)
- .Select(s => s.Stop.Description)
+ .Select(s => $"{s.Stop.Name} -- {s.Stop.Description}")
.Distinct()
.ToList();
}
@@ -71,11 +71,22 @@ public class NextStopsProcessor : IArrivalsProcessor
.Select(SplitXuntaStopDescription)
.ToList();
- List<string> seenConcellos = new();
- List<string> seenParroquias = new();
+ List<string> seenConcellos = [];
+ List<string> seenParroquias = [];
List<string> items = [];
- foreach (var (parroquia, concello) in points)
+ var maxPointsPerCouncil = points.GroupBy(p => p.concello)
+ .Select(g => g.Count())
+ .DefaultIfEmpty(0)
+ .Max();
+
+ if (maxPointsPerCouncil == 1)
+ {
+ // If there's only one stop per council, we can simplify the marquee to just show the council names
+ return string.Join(" - ", points.Select(p => p.nombre).Distinct());
+ }
+
+ foreach (var (nombre, parroquia, concello) in points)
{
// Santiago de Compostela -- Santiago de Compostela > Conxo -- Santiago de Compostela > BiduĂ­do -- Ames > Calo -- Teo > Bugallido -- Ames
// Santiago de Compostela -> Conxo -> Bidueiro (Ames) -> Calo (Teo) -> Bugallido
@@ -94,7 +105,7 @@ public class NextStopsProcessor : IArrivalsProcessor
if (!seenConcellos.Contains(concello))
{
seenConcellos.Add(concello);
- item = $"({concello}) {item}";
+ item = $"{item} ({concello})";
}
items.Add(item);
@@ -112,14 +123,14 @@ public class NextStopsProcessor : IArrivalsProcessor
};
}
- private static (string parroquia, string concello) SplitXuntaStopDescription(string stopName)
+ private static (string nombre, string parroquia, string concello) SplitXuntaStopDescription(string stopName)
{
- var parts = stopName.Split(" -- ", 2);
- if (parts.Length != 2)
+ var parts = stopName.Split(" -- ", 3);
+ if (parts.Length != 3)
{
- return ("", ""); // TODO: Throw
+ return ("", "", ""); // TODO: Throw
}
- return (parts[0], parts[1]);
+ return (parts[0], parts[1], parts[2]);
}
}