From bed48c3d7e49b1736d50ce42d92bb6c18cf02504 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Mon, 22 Dec 2025 22:06:06 +0100 Subject: Refactor arrivals handling and improve type definitions; reorganise components --- .../Controllers/ArrivalsController.cs | 29 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 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 5dee48d..7158137 100644 --- a/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs +++ b/src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs @@ -1,7 +1,6 @@ using System.Net; using Costasdev.Busurbano.Backend.GraphClient; using Costasdev.Busurbano.Backend.GraphClient.App; -using Costasdev.Busurbano.Backend.Types; using Costasdev.Busurbano.Backend.Types.Arrivals; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; @@ -37,7 +36,14 @@ public partial class ArrivalsController : ControllerBase var nowLocal = TimeZoneInfo.ConvertTime(DateTime.UtcNow, tz); var todayLocal = nowLocal.Date; - var requestContent = ArrivalsAtStopContent.Query(new(id, reduced ? 4 : 10)); + var requestContent = ArrivalsAtStopContent.Query( + new ArrivalsAtStopContent.Args( + id, + reduced ? 4 : 10, + ShouldFetchPastArrivals(id) + ) + ); + var request = new HttpRequestMessage(HttpMethod.Post, "http://100.67.54.115:3957/otp/gtfs/v1"); request.Content = JsonContent.Create(new GraphClientRequest { @@ -61,13 +67,20 @@ public partial class ArrivalsController : ControllerBase var minutesToArrive = (int)(departureTime - nowLocal).TotalMinutes; //var isRunning = departureTime < nowLocal; + // TODO: Handle this properly, since many times it's "tomorrow" but not handled properly + if (minutesToArrive < ArrivalsAtStopContent.PastArrivalMinutesIncluded) + { + continue; + } + Arrival arrival = new() { + TripId = item.Trip.GtfsId, Route = new RouteInfo { ShortName = item.Trip.RouteShortName, - Colour = item.Trip.Route.Color, - TextColour = item.Trip.Route.TextColor + Colour = item.Trip.Route.Color ?? "FFFFFF", + TextColour = item.Trip.Route.TextColor ?? "000000" }, Headsign = new HeadsignInfo { @@ -76,7 +89,7 @@ public partial class ArrivalsController : ControllerBase Estimate = new ArrivalDetails { Minutes = minutesToArrive, - Precission = departureTime < nowLocal ? ArrivalPrecission.Past : ArrivalPrecission.Scheduled + Precision = departureTime < nowLocal ? ArrivalPrecision.Past : ArrivalPrecision.Scheduled } }; @@ -91,6 +104,12 @@ public partial class ArrivalsController : ControllerBase }); } + private static bool ShouldFetchPastArrivals(string id) + { + string feedId = id.Split(':', 2)[0]; + return feedId == "xunta"; + } + [LoggerMessage(LogLevel.Error, "Error fetching stop data, received {statusCode} {responseBody}")] partial void LogErrorFetchingStopData(HttpStatusCode statusCode, string responseBody); } -- cgit v1.3