From 073c7174490ed3d8ae34c3f8c8f1b91bce711f6f Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Fri, 30 Jan 2026 19:59:47 +0100 Subject: 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 --- .../Controllers/TransitController.cs | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/Enmarcha.Backend/Controllers/TransitController.cs') 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> GetRouteDetails(string id) + public async Task> 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); -- cgit v1.3