diff --git a/src/WebUI/Common/Services/SydneyTimeProvider.cs b/src/WebUI/Common/Services/SydneyTimeProvider.cs new file mode 100644 index 0000000..e8c6671 --- /dev/null +++ b/src/WebUI/Common/Services/SydneyTimeProvider.cs @@ -0,0 +1,10 @@ +namespace WebUI.Common.Services; + +public class SydneyTimeProvider : TimeProvider +{ + private const string Timezone = "AUS Eastern Standard Time"; + + private readonly TimeZoneInfo _sydneyTimeZone = TimeZoneInfo.FindSystemTimeZoneById(Timezone); + + public override TimeZoneInfo LocalTimeZone => _sydneyTimeZone; +} diff --git a/src/WebUI/Common/Services/DateTimeService.cs b/src/WebUI/Common/Services/TimeProviderExt.cs similarity index 71% rename from src/WebUI/Common/Services/DateTimeService.cs rename to src/WebUI/Common/Services/TimeProviderExt.cs index d28143c..15aee46 100644 --- a/src/WebUI/Common/Services/DateTimeService.cs +++ b/src/WebUI/Common/Services/TimeProviderExt.cs @@ -1,17 +1,5 @@ namespace WebUI.Common.Services; -// Problem: Issue is that DateTime.Now could be different depending on where the code is running -// Solution: Force 'now' to be based on AEST, then converted to UTC - -public class SydneyTimeProvider : TimeProvider -{ - private const string Timezone = "AUS Eastern Standard Time"; - - private readonly TimeZoneInfo _sydneyTimeZone = TimeZoneInfo.FindSystemTimeZoneById(Timezone); - - public override TimeZoneInfo LocalTimeZone => _sydneyTimeZone; -} - public static class TimeProviderExt { public static DateOnly GetToday(this TimeProvider timeProvider) @@ -45,4 +33,4 @@ public static DateTime GetEndOfDayUtc(this TimeProvider timeProvider, DateOnly d return endOfDayUtc; } -} +} \ No newline at end of file diff --git a/src/WebUI/Features/DailyScrum/Queries/GetDailyScrumQuery.cs b/src/WebUI/Features/DailyScrum/Queries/GetDailyScrumQuery.cs index 8962c04..d8af2a1 100644 --- a/src/WebUI/Features/DailyScrum/Queries/GetDailyScrumQuery.cs +++ b/src/WebUI/Features/DailyScrum/Queries/GetDailyScrumQuery.cs @@ -5,9 +5,6 @@ namespace WebUI.Features.DailyScrum.Queries; -// TODO: Timezones are still not matching up. locally UTC times are working (i.e. in the middle of the day), -// But on docker they are from midnight to midnight (which is not correct) - public record GetDailyScrumQuery(string Name, int? ClientDays, DateOnly? LastWorkingDay) : IRequest; diff --git a/tests/UnitTests/SydneyTimeProviderTests.cs b/tests/UnitTests/SydneyTimeProviderTests.cs new file mode 100644 index 0000000..4f49781 --- /dev/null +++ b/tests/UnitTests/SydneyTimeProviderTests.cs @@ -0,0 +1,16 @@ +using FluentAssertions; +using WebUI.Common.Services; + +namespace UnitTests; + +public class SydneyTimeProviderTests +{ + [Fact] + public void GetLocalNow_ReturnsSydneyTime() + { + var sut = new SydneyTimeProvider(); + var localNow = DateTimeOffset.Now; + var result = sut.GetLocalNow(); + result.Should().BeCloseTo(localNow, precision: TimeSpan.FromSeconds(5)); + } +} diff --git a/tests/UnitTests/UnitTest1.cs b/tests/UnitTests/TimeProviderExtTests.cs similarity index 72% rename from tests/UnitTests/UnitTest1.cs rename to tests/UnitTests/TimeProviderExtTests.cs index 6d46c13..72cfa2c 100644 --- a/tests/UnitTests/UnitTest1.cs +++ b/tests/UnitTests/TimeProviderExtTests.cs @@ -3,18 +3,6 @@ namespace UnitTests; -public class SydneyTimeProviderTests -{ - [Fact] - public void GetLocalNow_ReturnsSydneyTime() - { - var sut = new SydneyTimeProvider(); - var localNow = DateTimeOffset.Now; - var result = sut.GetLocalNow(); - result.Should().BeCloseTo(localNow, precision: TimeSpan.FromSeconds(5)); - } -} - public class TimeProviderExtTests { [Fact] @@ -46,4 +34,4 @@ public void GetEndOfDayUtc_GivenSydneyTimeZone_ReturnsCorrectUtc() -} +} \ No newline at end of file