diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2026-04-04 15:44:41 +0200 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2026-04-04 15:44:41 +0200 |
| commit | 97908d274ee12eb2301fadd5fc445d0f79479a56 (patch) | |
| tree | 04eee0ad547cc68047011dea82549dcad4a0d0d8 /src/Enmarcha.Backend/Controllers/ArrivalsController.cs | |
| parent | 1b4f4a674ac533c0b51260ba35ab91dd2cf9486d (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.cs | 28 |
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) }); } |
