aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Controllers/ArrivalsController.cs
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2026-04-04 15:44:41 +0200
committerAriel Costas Guerrero <ariel@costas.dev>2026-04-04 15:44:41 +0200
commit97908d274ee12eb2301fadd5fc445d0f79479a56 (patch)
tree04eee0ad547cc68047011dea82549dcad4a0d0d8 /src/Enmarcha.Backend/Controllers/ArrivalsController.cs
parent1b4f4a674ac533c0b51260ba35ab91dd2cf9486d (diff)
Enhance arrival and transit functionality with new vehicle operation logic and transit kind classification
Diffstat (limited to 'src/Enmarcha.Backend/Controllers/ArrivalsController.cs')
-rw-r--r--src/Enmarcha.Backend/Controllers/ArrivalsController.cs28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/Enmarcha.Backend/Controllers/ArrivalsController.cs b/src/Enmarcha.Backend/Controllers/ArrivalsController.cs
index 16bc047..7feeee0 100644
--- a/src/Enmarcha.Backend/Controllers/ArrivalsController.cs
+++ b/src/Enmarcha.Backend/Controllers/ArrivalsController.cs
@@ -140,6 +140,15 @@ public partial class ArrivalsController : ControllerBase
return Ok(new StopEstimatesResponse { Arrivals = estimates });
}
+ private static VehicleOperation GetVehicleOperation(ArrivalsAtStopResponse.PickupType pickup, ArrivalsAtStopResponse.PickupType dropoff)
+ {
+ if (pickup == ArrivalsAtStopResponse.PickupType.None && dropoff == ArrivalsAtStopResponse.PickupType.None) return VehicleOperation.PickupDropoff;
+ if (pickup != ArrivalsAtStopResponse.PickupType.None && dropoff != ArrivalsAtStopResponse.PickupType.None) return VehicleOperation.PickupDropoff;
+ if (pickup != ArrivalsAtStopResponse.PickupType.None) return VehicleOperation.PickupOnly;
+ if (dropoff != ArrivalsAtStopResponse.PickupType.None) return VehicleOperation.DropoffOnly;
+ return VehicleOperation.PickupDropoff;
+ }
+
private async Task<(ArrivalsAtStopResponse.StopItem Stop, ArrivalsContext Context)?> FetchAndProcessArrivalsAsync(
string id, bool reduced, bool nano)
{
@@ -168,11 +177,21 @@ public partial class ArrivalsController : ControllerBase
List<Arrival> arrivals = [];
foreach (var item in stop.Arrivals)
{
- if (item.PickupTypeParsed.Equals(ArrivalsAtStopResponse.PickupType.None)) continue;
+ //if (item.PickupTypeParsed.Equals(ArrivalsAtStopResponse.PickupType.None)) continue;
+ //if (
+ // item.Trip.ArrivalStoptime.Stop.GtfsId == id &&
+ // item.Trip.DepartureStoptime.Stop.GtfsId != id
+ //) continue;
+
+ // Delete loop routes that aren't starting here
if (
item.Trip.ArrivalStoptime.Stop.GtfsId == id &&
- item.Trip.DepartureStoptime.Stop.GtfsId != id
- ) continue;
+ item.Trip.DepartureStoptime.Stop.GtfsId == id &&
+ item.StopPosition != 1
+ )
+ {
+ continue;
+ }
var serviceDayLocal = TimeZoneInfo.ConvertTime(DateTimeOffset.FromUnixTimeSeconds(item.ServiceDay), tz);
var departureTime = serviceDayLocal.Date.AddSeconds(item.ScheduledDepartureSeconds);
@@ -195,7 +214,8 @@ public partial class ArrivalsController : ControllerBase
Precision = departureTime < nowLocal.AddMinutes(-1) ? ArrivalPrecision.Past : ArrivalPrecision.Scheduled
},
Operator = feedId == "xunta" ? item.Trip.Route.Agency?.Name : null,
- RawOtpTrip = item
+ RawOtpTrip = item,
+ Operation = GetVehicleOperation(item.PickupTypeParsed, item.DropoffTypeParsed)
});
}