From f2a37bc6366beccce247f834adee752b8e6323ae Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Mon, 20 Apr 2026 13:41:35 +0200 Subject: Distinguir pasos de subida y salida (inicio trayecto), y pasos de bajada de llegada (final trayecto) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../Controllers/ArrivalsController.cs | 19 +++++++++++++++++-- src/Enmarcha.Backend/Types/Arrivals/Arrival.cs | 6 +++++- 2 files changed, 22 insertions(+), 3 deletions(-) (limited to 'src/Enmarcha.Backend') 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 -- cgit v1.3