diff options
| -rw-r--r-- | Enmarcha.Sources.CtagShuttle/Status.cs | 4 | ||||
| -rw-r--r-- | src/Enmarcha.Backend/Services/Processors/CtagShuttleRealTimeProcessor.cs | 5 |
2 files changed, 6 insertions, 3 deletions
diff --git a/Enmarcha.Sources.CtagShuttle/Status.cs b/Enmarcha.Sources.CtagShuttle/Status.cs index ecf2da1..f52beaa 100644 --- a/Enmarcha.Sources.CtagShuttle/Status.cs +++ b/Enmarcha.Sources.CtagShuttle/Status.cs @@ -17,10 +17,10 @@ public class CtagShuttleStatus public Status Status => Status.Parse(StatusValue); [JsonIgnore] - public DateTime LastPositionAt => DateTime.Parse(LastPositionAtValue); + public DateTime LastPositionAt => DateTime.Parse(LastPositionAtValue, null, System.Globalization.DateTimeStyles.AssumeUniversal | System.Globalization.DateTimeStyles.AdjustToUniversal); [JsonIgnore] - public DateTime LastOccupancyAt => DateTime.Parse(LastOccupancyAtValue); + public DateTime LastOccupancyAt => DateTime.Parse(LastOccupancyAtValue, null, System.Globalization.DateTimeStyles.AssumeUniversal | System.Globalization.DateTimeStyles.AdjustToUniversal); } public enum Status diff --git a/src/Enmarcha.Backend/Services/Processors/CtagShuttleRealTimeProcessor.cs b/src/Enmarcha.Backend/Services/Processors/CtagShuttleRealTimeProcessor.cs index 593ac86..570059b 100644 --- a/src/Enmarcha.Backend/Services/Processors/CtagShuttleRealTimeProcessor.cs +++ b/src/Enmarcha.Backend/Services/Processors/CtagShuttleRealTimeProcessor.cs @@ -42,7 +42,10 @@ public class CtagShuttleRealTimeProcessor : AbstractRealTimeProcessor System.Diagnostics.Activity.Current?.SetTag("shuttle.status", status.StatusValue); // Validate position timestamp - skip if data is stale (>3 minutes old) - var positionAge = (context.NowLocal - status.LastPositionAt).TotalMinutes; + // Convert UTC timestamp to Madrid time for comparison + var madridTz = TimeZoneInfo.FindSystemTimeZoneById("Europe/Madrid"); + var lastPositionMadrid = TimeZoneInfo.ConvertTimeFromUtc(status.LastPositionAt, madridTz); + var positionAge = (context.NowLocal - lastPositionMadrid).TotalMinutes; if (positionAge > MaxPositionAgeMinutes) { _logger.LogInformation( |
