diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-29 00:41:52 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-29 00:41:52 +0100 |
| commit | a304c24b32c0327436bbd8c2853e60668e161b42 (patch) | |
| tree | 08f65c05daca134cf4d2e4f779bd15d98fd66370 /src/Enmarcha.Backend/Controllers/VigoController.cs | |
| parent | 120a3c6bddd0fb8d9fa05df4763596956554c025 (diff) | |
Rename a lot of stuff, add Santiago real time
Diffstat (limited to 'src/Enmarcha.Backend/Controllers/VigoController.cs')
| -rw-r--r-- | src/Enmarcha.Backend/Controllers/VigoController.cs | 69 |
1 files changed, 69 insertions, 0 deletions
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<VigoController> _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<AppConfiguration> options, + ILogger<VigoController> 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<IActionResult> 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); + } +} |
