From f81ff82f2a07f87f6eb4f43de49ede64215519e5 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Sat, 27 Dec 2025 16:39:09 +0100 Subject: Refactor route planner to use new GraphQL backend --- .../Controllers/ArrivalsController.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs') diff --git a/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs b/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs index 957668a..6096b53 100644 --- a/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs +++ b/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs @@ -75,11 +75,18 @@ public partial class ArrivalsController : ControllerBase List arrivals = []; foreach (var item in stop.Arrivals) { + // Discard trip without pickup at stop if (item.PickupTypeParsed.Equals(ArrivalsAtStopResponse.PickupType.None)) { continue; } + // Discard on last stop + if (item.Trip.ArrivalStoptime.Stop.GtfsId == id) + { + continue; + } + if (item.Trip.Geometry?.Points != null) { _logger.LogDebug("Trip {TripId} has geometry", item.Trip.GtfsId); @@ -133,6 +140,8 @@ public partial class ArrivalsController : ControllerBase // Time after an arrival's time to still include it in the response. This is useful without real-time data, for delayed buses. var timeThreshold = GetThresholdForFeed(id); + var (fallbackColor, fallbackTextColor) = _feedService.GetFallbackColourForFeed(feedId); + return Ok(new StopArrivalsResponse { StopCode = _feedService.NormalizeStopCode(feedId, stop.Code), @@ -151,8 +160,10 @@ public partial class ArrivalsController : ControllerBase { GtfsId = r.GtfsId, ShortName = _feedService.NormalizeRouteShortName(feedId, r.ShortName ?? ""), - Colour = r.Color ?? "FFFFFF", - TextColour = r.TextColor ?? "000000" + Colour = r.Color ?? fallbackColor, + TextColour = r.TextColor is null or "000000" ? + ContrastHelper.GetBestTextColour(r.Color ?? fallbackColor) : + r.TextColor })], Arrivals = [.. arrivals.Where(a => a.Estimate.Minutes >= timeThreshold)] }); @@ -163,7 +174,7 @@ public partial class ArrivalsController : ControllerBase { string feedId = id.Split(':', 2)[0]; - if (feedId == "vitrasa" || feedId == "coruna") + if (feedId is "vitrasa" or "coruna") { return 0; } -- cgit v1.3