From d71f0ed16d175285f2e8cbde6091994c2aa1d962 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Mon, 9 Mar 2026 00:00:39 +0100 Subject: Enhance route details handling and add favorites functionality; improve error logging and response structure --- src/Enmarcha.Backend/Controllers/TransitController.cs | 15 ++++++++++++++- src/Enmarcha.Backend/Services/OtpService.cs | 4 +++- src/Enmarcha.Backend/Types/Transit/RouteDtos.cs | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src/Enmarcha.Backend') diff --git a/src/Enmarcha.Backend/Controllers/TransitController.cs b/src/Enmarcha.Backend/Controllers/TransitController.cs index 7876dbe..9b13972 100644 --- a/src/Enmarcha.Backend/Controllers/TransitController.cs +++ b/src/Enmarcha.Backend/Controllers/TransitController.cs @@ -124,8 +124,21 @@ public class TransitController : ControllerBase var query = RouteDetailsContent.Query(new RouteDetailsContent.Args(id, serviceDate)); var response = await SendOtpQueryAsync(query); - if (response?.Data?.Route == null) + if (response == null) { + return StatusCode(500, "Failed to connect to OTP."); + } + + if (!response.IsSuccess) + { + var messages = string.Join("; ", response.Errors?.Select(e => e.Message) ?? []); + _logger.LogError("OTP returned errors: {Errors}", messages); + return StatusCode(500, $"OTP Error: {messages}"); + } + + if (response.Data?.Route == null) + { + _logger.LogWarning("Route details not found for {Id} on {ServiceDate}", id, serviceDate); return NotFound(); } diff --git a/src/Enmarcha.Backend/Services/OtpService.cs b/src/Enmarcha.Backend/Services/OtpService.cs index e72877e..0de06bf 100644 --- a/src/Enmarcha.Backend/Services/OtpService.cs +++ b/src/Enmarcha.Backend/Services/OtpService.cs @@ -108,7 +108,9 @@ public class OtpService .Select(t => t.Stoptimes.ElementAtOrDefault(i)?.ScheduledDeparture ?? -1) .Where(d => d != -1) .OrderBy(d => d) - .ToList() + .ToList(), + PickupType = pattern.TripsForDate.FirstOrDefault()?.Stoptimes.ElementAtOrDefault(i)?.PickupType, + DropOffType = pattern.TripsForDate.FirstOrDefault()?.Stoptimes.ElementAtOrDefault(i)?.DropoffType }).ToList() }; } diff --git a/src/Enmarcha.Backend/Types/Transit/RouteDtos.cs b/src/Enmarcha.Backend/Types/Transit/RouteDtos.cs index 3904555..8427ec7 100644 --- a/src/Enmarcha.Backend/Types/Transit/RouteDtos.cs +++ b/src/Enmarcha.Backend/Types/Transit/RouteDtos.cs @@ -43,4 +43,6 @@ public class PatternStopDto public double Lat { get; set; } public double Lon { get; set; } public List ScheduledDepartures { get; set; } = []; + public string? PickupType { get; set; } + public string? DropOffType { get; set; } } -- cgit v1.3