aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2026-03-09 00:00:39 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2026-03-09 00:00:50 +0100
commitd71f0ed16d175285f2e8cbde6091994c2aa1d962 (patch)
treee8b0bcc3f432fa9d5243dd4595af256511643151 /src/Enmarcha.Backend
parent5288cfbed34f94c4321b8d9dc497cfd0da3ffd26 (diff)
Enhance route details handling and add favorites functionality; improve error logging and response structure
Diffstat (limited to 'src/Enmarcha.Backend')
-rw-r--r--src/Enmarcha.Backend/Controllers/TransitController.cs15
-rw-r--r--src/Enmarcha.Backend/Services/OtpService.cs4
-rw-r--r--src/Enmarcha.Backend/Types/Transit/RouteDtos.cs2
3 files changed, 19 insertions, 2 deletions
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<RouteDetailsResponse>(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<int> ScheduledDepartures { get; set; } = [];
+ public string? PickupType { get; set; }
+ public string? DropOffType { get; set; }
}