aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2026-01-30 19:59:47 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2026-01-30 20:01:43 +0100
commit073c7174490ed3d8ae34c3f8c8f1b91bce711f6f (patch)
treeb1c1581a7668ebddfce192f2c9ed9c780deb670f /src/Enmarcha.Backend
parent7348781b89178589036620b33f3554b2e7271c5f (diff)
feat: Add date parameter to GetRouteDetails and update fetchRouteDetails to support date queries
feat: Enhance localization with new date-related strings in English, Spanish, and Galician feat: Improve RouteDetailsPage with layout options and date selection for better user experience
Diffstat (limited to 'src/Enmarcha.Backend')
-rw-r--r--src/Enmarcha.Backend/Controllers/TransitController.cs24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/Enmarcha.Backend/Controllers/TransitController.cs b/src/Enmarcha.Backend/Controllers/TransitController.cs
index 4853e66..a0b8e39 100644
--- a/src/Enmarcha.Backend/Controllers/TransitController.cs
+++ b/src/Enmarcha.Backend/Controllers/TransitController.cs
@@ -7,6 +7,7 @@ using Enmarcha.Backend.Types.Transit;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
+using System.Globalization;
namespace Enmarcha.Backend.Controllers;
@@ -83,12 +84,31 @@ public class TransitController : ControllerBase
}
[HttpGet("routes/{id}")]
- public async Task<ActionResult<RouteDetailsDto>> GetRouteDetails(string id)
+ public async Task<ActionResult<RouteDetailsDto>> GetRouteDetails(
+ string id,
+ [FromQuery] string? date
+ )
{
using var activity = Telemetry.Source.StartActivity("GetRouteDetails");
activity?.SetTag("route.id", id);
- var serviceDate = DateTime.Now.ToString("yyyy-MM-dd");
+ string serviceDate;
+ if (!string.IsNullOrWhiteSpace(date))
+ {
+ if (!DateOnly.TryParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate))
+ {
+ return BadRequest("Invalid date. Use yyyy-MM-dd.");
+ }
+
+ serviceDate = parsedDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
+ }
+ else
+ {
+ var tz = TimeZoneInfo.FindSystemTimeZoneById("Europe/Madrid");
+ var nowLocal = TimeZoneInfo.ConvertTime(DateTime.UtcNow, tz);
+ serviceDate = nowLocal.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
+ }
+
var cacheKey = $"route_details_{id}_{serviceDate}";
var cacheHit = _cache.TryGetValue(cacheKey, out RouteDetailsDto? cachedDetails);