From a304c24b32c0327436bbd8c2853e60668e161b42 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Mon, 29 Dec 2025 00:41:52 +0100 Subject: Rename a lot of stuff, add Santiago real time --- src/Enmarcha.Backend/Controllers/VigoController.cs | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/Enmarcha.Backend/Controllers/VigoController.cs (limited to 'src/Enmarcha.Backend/Controllers/VigoController.cs') diff --git a/src/Enmarcha.Backend/Controllers/VigoController.cs b/src/Enmarcha.Backend/Controllers/VigoController.cs new file mode 100644 index 0000000..4199251 --- /dev/null +++ b/src/Enmarcha.Backend/Controllers/VigoController.cs @@ -0,0 +1,69 @@ +using Costasdev.VigoTransitApi; +using Enmarcha.Backend.Configuration; +using Enmarcha.Backend.Services; +using Enmarcha.Backend.Services.Providers; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; + +namespace Enmarcha.Backend.Controllers; + +[ApiController] +[Route("api/vigo")] +public partial class VigoController : ControllerBase +{ + private readonly ILogger _logger; + private readonly VigoTransitApiClient _api; + private readonly AppConfiguration _configuration; + private readonly ShapeTraversalService _shapeService; + private readonly VitrasaTransitProvider _vitrasaProvider; + private readonly RenfeTransitProvider _renfeProvider; + + public VigoController( + HttpClient http, + IOptions options, + ILogger logger, + ShapeTraversalService shapeService, + VitrasaTransitProvider vitrasaProvider, + RenfeTransitProvider renfeProvider) + { + _logger = logger; + _api = new VigoTransitApiClient(http); + _configuration = options.Value; + _shapeService = shapeService; + _vitrasaProvider = vitrasaProvider; + _renfeProvider = renfeProvider; + } + + [HttpGet("GetConsolidatedCirculations")] + public async Task GetConsolidatedCirculations( + [FromQuery] string stopId + ) + { + // Use Europe/Madrid timezone consistently to avoid UTC/local skew + var tz = TimeZoneInfo.FindSystemTimeZoneById("Europe/Madrid"); + var nowLocal = TimeZoneInfo.ConvertTime(DateTime.UtcNow, tz); + + ITransitProvider provider; + string effectiveStopId; + + if (stopId.StartsWith("renfe:")) + { + provider = _renfeProvider; + effectiveStopId = stopId.Substring("renfe:".Length); + } + else if (stopId.StartsWith("vitrasa:")) + { + provider = _vitrasaProvider; + effectiveStopId = stopId.Substring("vitrasa:".Length); + } + else + { + // Legacy/Default + provider = _vitrasaProvider; + effectiveStopId = stopId; + } + + var result = await provider.GetCirculationsAsync(effectiveStopId, nowLocal); + return Ok(result); + } +} -- cgit v1.3