diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2026-04-20 13:41:35 +0200 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2026-04-20 13:41:35 +0200 |
| commit | f2a37bc6366beccce247f834adee752b8e6323ae (patch) | |
| tree | bb893100ebb8a9ca6f057410adf83e293cfa1123 /src/Enmarcha.Backend | |
| parent | 23b6fb227a1b840a36864bdebc4de89c19fd6463 (diff) | |
Distinguir pasos de subida y salida (inicio trayecto), y pasos de bajada de llegada (final trayecto)
Puede ser importante distinguir entre un viaje que solo permite bajar en un punto, y un viaje que finaliza ahí, ya que puede tener sentido ocultar los viajes que terminan en algunos feeds. Por otra parte, es útil saber que ciertos viajes salen de ese sitio, frente a ser pasantes de subida, porque el vehículo suele estar con antelación
Diffstat (limited to 'src/Enmarcha.Backend')
| -rw-r--r-- | src/Enmarcha.Backend/Controllers/ArrivalsController.cs | 19 | ||||
| -rw-r--r-- | src/Enmarcha.Backend/Types/Arrivals/Arrival.cs | 6 |
2 files changed, 22 insertions, 3 deletions
diff --git a/src/Enmarcha.Backend/Controllers/ArrivalsController.cs b/src/Enmarcha.Backend/Controllers/ArrivalsController.cs index 7feeee0..5608723 100644 --- a/src/Enmarcha.Backend/Controllers/ArrivalsController.cs +++ b/src/Enmarcha.Backend/Controllers/ArrivalsController.cs @@ -140,8 +140,23 @@ public partial class ArrivalsController : ControllerBase return Ok(new StopEstimatesResponse { Arrivals = estimates }); } - private static VehicleOperation GetVehicleOperation(ArrivalsAtStopResponse.PickupType pickup, ArrivalsAtStopResponse.PickupType dropoff) + private static VehicleOperation GetVehicleOperation( + ArrivalsAtStopResponse.Arrival item + ) { + var pickup = item.PickupTypeParsed; + var dropoff = item.DropoffTypeParsed; + + if (item.StopPosition == 0) + { + return VehicleOperation.Departure; + } + + if (item.StopPosition == item.Trip.Stoptimes.Count - 1) + { + return VehicleOperation.Arrival; + } + 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; @@ -215,7 +230,7 @@ public partial class ArrivalsController : ControllerBase }, Operator = feedId == "xunta" ? item.Trip.Route.Agency?.Name : null, RawOtpTrip = item, - Operation = GetVehicleOperation(item.PickupTypeParsed, item.DropoffTypeParsed) + Operation = GetVehicleOperation(item) }); } diff --git a/src/Enmarcha.Backend/Types/Arrivals/Arrival.cs b/src/Enmarcha.Backend/Types/Arrivals/Arrival.cs index 81811c2..0e74a44 100644 --- a/src/Enmarcha.Backend/Types/Arrivals/Arrival.cs +++ b/src/Enmarcha.Backend/Types/Arrivals/Arrival.cs @@ -46,7 +46,11 @@ public enum VehicleOperation [JsonStringEnumMemberName("pickup_only")] PickupOnly = 1, [JsonStringEnumMemberName("dropoff_only")] - DropoffOnly = 2 + DropoffOnly = 2, + [JsonStringEnumMemberName("departure")] + Departure = 3, + [JsonStringEnumMemberName("arrival")] + Arrival = 4 } public class RouteInfo |
