aboutsummaryrefslogtreecommitdiff
path: root/src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs')
-rw-r--r--src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs b/src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs
new file mode 100644
index 0000000..3bb9930
--- /dev/null
+++ b/src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs
@@ -0,0 +1,78 @@
+using System.Globalization;
+using System.Text.Json;
+using Costasdev.Busurbano.Backend.Types;
+using Microsoft.AspNetCore.Mvc;
+using SysFile = System.IO.File;
+
+namespace Costasdev.Busurbano.Backend.Controllers;
+
+public partial class VigoController : ControllerBase
+{
+ [HttpGet("GetStopEstimates")]
+ public async Task<IActionResult> Run(
+ [FromQuery] int id
+ )
+ {
+ try
+ {
+ var response = await _api.GetStopEstimates(id);
+ // Return only the estimates array, not the stop metadata
+ return new OkObjectResult(response.Estimates);
+ }
+ catch (InvalidOperationException)
+ {
+ return BadRequest("Stop not found");
+ }
+ }
+
+ [HttpGet("GetStopTimetable")]
+ public async Task<IActionResult> GetStopTimetable(
+ [FromQuery] int stopId,
+ [FromQuery] string? date = null
+)
+ {
+ // Use Europe/Madrid timezone to determine the correct date
+ var tz = TimeZoneInfo.FindSystemTimeZoneById("Europe/Madrid");
+ var nowLocal = TimeZoneInfo.ConvertTime(DateTime.UtcNow, tz);
+
+ // If no date provided or date is "today", use Madrid timezone's current date
+ string effectiveDate;
+ if (string.IsNullOrEmpty(date) || date == "today")
+ {
+ effectiveDate = nowLocal.Date.ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ // Validate provided date format
+ if (!DateTime.TryParseExact(date, "yyyy-MM-dd", null, DateTimeStyles.None, out _))
+ {
+ return BadRequest("Invalid date format. Please use yyyy-MM-dd format.");
+ }
+ effectiveDate = date;
+ }
+
+ try
+ {
+ var file = Path.Combine(_configuration.ScheduleBasePath, effectiveDate, stopId + ".json");
+ if (!SysFile.Exists(file))
+ {
+ throw new FileNotFoundException();
+ }
+
+ var contents = await SysFile.ReadAllTextAsync(file);
+
+ return new OkObjectResult(JsonSerializer.Deserialize<List<ScheduledStop>>(contents)!);
+ }
+ catch (FileNotFoundException ex)
+ {
+ _logger.LogError(ex, "Stop data not found for stop {StopId} on date {Date}", stopId, effectiveDate);
+ return StatusCode(404, $"Stop data not found for stop {stopId} on date {effectiveDate}");
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Error loading stop data");
+ return StatusCode(500, "Error loading timetable");
+ }
+ }
+
+}