aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Services/Processors
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2025-12-29 09:58:47 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2025-12-29 09:58:47 +0100
commitfca243af88be3081dc036eaf50ea8f409ad9e9d0 (patch)
tree402d8859ddef351a727cde2a5363900997871eb7 /src/Enmarcha.Backend/Services/Processors
parent1c164a81b928f4ca200220e0111d303cad80164c (diff)
fix Santiago Real Time implementation
Diffstat (limited to 'src/Enmarcha.Backend/Services/Processors')
-rw-r--r--src/Enmarcha.Backend/Services/Processors/SantiagoRealTimeProcessor.cs41
1 files changed, 30 insertions, 11 deletions
diff --git a/src/Enmarcha.Backend/Services/Processors/SantiagoRealTimeProcessor.cs b/src/Enmarcha.Backend/Services/Processors/SantiagoRealTimeProcessor.cs
index 28b38a9..b941c6e 100644
--- a/src/Enmarcha.Backend/Services/Processors/SantiagoRealTimeProcessor.cs
+++ b/src/Enmarcha.Backend/Services/Processors/SantiagoRealTimeProcessor.cs
@@ -1,3 +1,4 @@
+using Enmarcha.Backend.Helpers;
using Enmarcha.Sources.OpenTripPlannerGql.Queries;
using Enmarcha.Sources.TranviasCoruna;
using Enmarcha.Backend.Types;
@@ -41,15 +42,12 @@ public class SantiagoRealTimeProcessor : AbstractRealTimeProcessor
{
var bestMatch = context.Arrivals
.Where(a => !usedTripIds.Contains(a.TripId))
- .Where(a => a.Route.RouteIdInGtfs.Trim() == estimate.RouteId.Trim())
- .Select(a =>
+ .Where(a => a.Route.RouteIdInGtfs.Trim() == estimate.Id.ToString())
+ .Select(a => new
{
- return new
- {
- Arrival = a,
- TimeDiff = estimate.Minutes - a.Estimate.Minutes, // RealTime - Schedule
- RouteMatch = true
- };
+ Arrival = a,
+ TimeDiff = estimate.MinutesToArrive - a.Estimate.Minutes, // RealTime - Schedule
+ RouteMatch = true
})
.Where(x => x.RouteMatch) // Strict route matching
.Where(x => x.TimeDiff >= -7 && x.TimeDiff <= 75) // Allow 7m early (RealTime < Schedule) or 75m late (RealTime > Schedule)
@@ -58,17 +56,38 @@ public class SantiagoRealTimeProcessor : AbstractRealTimeProcessor
if (bestMatch == null)
{
- continue;
+ context.Arrivals.Add(new Arrival
+ {
+ TripId = $"tussa:rt:{estimate.Id}:{estimate.MinutesToArrive}",
+ Route = new RouteInfo
+ {
+ GtfsId = $"tussa:{estimate.Id}",
+ ShortName = estimate.Sinoptico,
+ Colour = estimate.Colour,
+ TextColour = ContrastHelper.GetBestTextColour(estimate.Colour)
+ },
+ Headsign = new HeadsignInfo
+ {
+ Badge = "T.REAL",
+ Destination = estimate.Name
+ },
+ Estimate = new ArrivalDetails
+ {
+ Minutes = estimate.MinutesToArrive,
+ Precision = ArrivalPrecision.Confident
+ }
+
+ });
}
var arrival = bestMatch.Arrival;
var scheduledMinutes = arrival.Estimate.Minutes;
- arrival.Estimate.Minutes = estimate.Minutes;
+ arrival.Estimate.Minutes = estimate.MinutesToArrive;
arrival.Estimate.Precision = ArrivalPrecision.Confident;
// Calculate delay badge
- var delayMinutes = estimate.Minutes - scheduledMinutes;
+ var delayMinutes = estimate.MinutesToArrive - scheduledMinutes;
if (delayMinutes != 0)
{
arrival.Delay = new DelayBadge { Minutes = delayMinutes };