diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-22 22:06:06 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-22 22:06:06 +0100 |
| commit | bed48c3d7e49b1736d50ce42d92bb6c18cf02504 (patch) | |
| tree | 475571ad6fa8c7aa1f8e81520689bf1eb425164c /src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs | |
| parent | 68f49dec91d68579803d6d579b1f1ecb4fc1dd1f (diff) | |
Refactor arrivals handling and improve type definitions; reorganise components
Diffstat (limited to 'src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs')
| -rw-r--r-- | src/Costasdev.Busurbano.Backend/Controllers/ArrivalsController.cs | 29 |
1 files changed, 24 insertions, 5 deletions
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); } |
