diff options
| -rw-r--r-- | server/src/Data/Database/ApiAccessToken.cs | 4 | ||||
| -rw-r--r-- | server/src/Data/Database/Base.cs | 4 | ||||
| -rw-r--r-- | server/src/Data/Database/ForgotPasswordRequest.cs | 4 | ||||
| -rw-r--r-- | server/src/Data/Dtos/UserArchiveDto.cs | 2 | ||||
| -rw-r--r-- | server/src/Data/Static/AppDateTime.cs | 16 | ||||
| -rw-r--r-- | server/src/Endpoints/Internal/Account/GetArchiveRoute.cs | 2 | ||||
| -rw-r--r-- | server/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs | 4 | ||||
| -rw-r--r-- | server/src/Endpoints/V1/Entries/EntryQueryRoute.cs | 16 | ||||
| -rw-r--r-- | server/src/Services/ForgotPasswordService.cs | 4 | ||||
| -rw-r--r-- | server/src/Utilities/GithubAuthenticationHelpers.cs | 2 |
10 files changed, 37 insertions, 21 deletions
diff --git a/server/src/Data/Database/ApiAccessToken.cs b/server/src/Data/Database/ApiAccessToken.cs index 3eff5f3..a9cf0bc 100644 --- a/server/src/Data/Database/ApiAccessToken.cs +++ b/server/src/Data/Database/ApiAccessToken.cs @@ -8,7 +8,7 @@ public class ApiAccessToken : Base public bool AllowCreate { get; set; } public bool AllowUpdate { get; set; } public bool AllowDelete { get; set; } - public bool HasExpired => ExpiryDate < DateTime.UtcNow; + public bool HasExpired => ExpiryDate < AppDateTime.UtcNow; public ApiAccessTokenDto AsDto => new(this); public class ApiAccessTokenDto @@ -26,6 +26,6 @@ public class ApiAccessToken : Base public bool AllowCreate { get; set; } public bool AllowUpdate { get; set; } public bool AllowDelete { get; set; } - public bool HasExpired => ExpiryDate < DateTime.UtcNow; + public bool HasExpired => ExpiryDate < AppDateTime.UtcNow; } } diff --git a/server/src/Data/Database/Base.cs b/server/src/Data/Database/Base.cs index 90b52da..7e8591e 100644 --- a/server/src/Data/Database/Base.cs +++ b/server/src/Data/Database/Base.cs @@ -4,12 +4,12 @@ public class Base { protected Base() { Id = Guid.NewGuid(); - CreatedAt = DateTime.UtcNow; + CreatedAt = AppDateTime.UtcNow; } public Guid Id { get; init; } public DateTime CreatedAt { get; init; } public DateTime? ModifiedAt { get; private set; } public bool Deleted { get; set; } - public void Modified() => ModifiedAt = DateTime.UtcNow; + public void Modified() => ModifiedAt = AppDateTime.UtcNow; } diff --git a/server/src/Data/Database/ForgotPasswordRequest.cs b/server/src/Data/Database/ForgotPasswordRequest.cs index 164f09d..1510a35 100644 --- a/server/src/Data/Database/ForgotPasswordRequest.cs +++ b/server/src/Data/Database/ForgotPasswordRequest.cs @@ -5,7 +5,7 @@ public class ForgotPasswordRequest public ForgotPasswordRequest() { } public ForgotPasswordRequest(User user) { - CreatedAt = DateTime.UtcNow; + CreatedAt = AppDateTime.UtcNow; Id = Guid.NewGuid(); User = user; } @@ -19,5 +19,5 @@ public class ForgotPasswordRequest public DateTime ExpirationDate => CreatedAt.AddMinutes(15); [NotMapped] - public bool IsExpired => DateTime.Compare(ExpirationDate, DateTime.UtcNow) < 0; + public bool IsExpired => DateTime.Compare(ExpirationDate, AppDateTime.UtcNow) < 0; } diff --git a/server/src/Data/Dtos/UserArchiveDto.cs b/server/src/Data/Dtos/UserArchiveDto.cs index 63b1470..42e0600 100644 --- a/server/src/Data/Dtos/UserArchiveDto.cs +++ b/server/src/Data/Dtos/UserArchiveDto.cs @@ -9,7 +9,7 @@ public class UserArchiveDto /// <inheritdoc cref="UserArchiveDto"/> public UserArchiveDto(User user) { Meta = new MetaDto { - GeneratedAt = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ") + GeneratedAt = AppDateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ") }; User = new UserDto(user); Entries = new List<EntryDto>(); diff --git a/server/src/Data/Static/AppDateTime.cs b/server/src/Data/Static/AppDateTime.cs new file mode 100644 index 0000000..880d2a8 --- /dev/null +++ b/server/src/Data/Static/AppDateTime.cs @@ -0,0 +1,16 @@ +namespace IOL.GreatOffice.Api.Data.Static; + +public static class AppDateTime +{ + private static DateTime? dateTime; + + public static DateTime UtcNow => dateTime ?? DateTime.UtcNow; + + public static void Set(DateTime setDateTime) { + dateTime = setDateTime; + } + + public static void Reset() { + dateTime = null; + } +} diff --git a/server/src/Endpoints/Internal/Account/GetArchiveRoute.cs b/server/src/Endpoints/Internal/Account/GetArchiveRoute.cs index 951dee0..f1b70f3 100644 --- a/server/src/Endpoints/Internal/Account/GetArchiveRoute.cs +++ b/server/src/Endpoints/Internal/Account/GetArchiveRoute.cs @@ -57,6 +57,6 @@ public class GetAccountArchiveRoute : RouteBaseAsync.WithoutRequest.WithActionRe return File(entriesSerialized, "application/json", - user.Username + "-time-tracker-archive-" + DateTime.UtcNow.ToString("yyyyMMddTHHmmss") + ".json"); + user.Username + "-time-tracker-archive-" + AppDateTime.UtcNow.ToString("yyyyMMddTHHmmss") + ".json"); } } diff --git a/server/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs b/server/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs index 3e086f6..1c2a51b 100644 --- a/server/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs +++ b/server/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs @@ -34,12 +34,12 @@ public class CreateResetRequestRoute : RouteBaseAsync.WithRequest<string>.WithAc // this is fine as long as the client is not connecting from Australia: Lord Howe Island // according to https://en.wikipedia.org/wiki/Daylight_saving_time_by_country - if (tz.IsDaylightSavingTime(DateTime.UtcNow)) { + if (tz.IsDaylightSavingTime(AppDateTime.UtcNow)) { offset++; } _logger.LogInformation("Request time zone (" + tz.Id + ") offset is: " + offset + " hours"); - var requestDateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz); + var requestDateTime = TimeZoneInfo.ConvertTimeFromUtc(AppDateTime.UtcNow, tz); _logger.LogInformation("Creating forgot password request with date time: " + requestDateTime.ToString("u")); try { diff --git a/server/src/Endpoints/V1/Entries/EntryQueryRoute.cs b/server/src/Endpoints/V1/Entries/EntryQueryRoute.cs index c037b72..d431ac5 100644 --- a/server/src/Endpoints/V1/Entries/EntryQueryRoute.cs +++ b/server/src/Endpoints/V1/Entries/EntryQueryRoute.cs @@ -31,12 +31,12 @@ public class EntryQueryRoute : RouteBaseSync.WithRequest<EntryQueryPayload>.With // this is fine as long as the client is not connecting from Australia: Lord Howe Island // according to https://en.wikipedia.org/wiki/Daylight_saving_time_by_country - if (tz.IsDaylightSavingTime(DateTime.UtcNow)) { + if (tz.IsDaylightSavingTime(AppDateTime.UtcNow)) { offsetInHours++; } _logger.LogInformation("Request time zone (" + tz.Id + ") offset is: " + offsetInHours + " hours"); - var requestDateTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz); + var requestDateTime = TimeZoneInfo.ConvertTimeFromUtc(AppDateTime.UtcNow, tz); _logger.LogInformation("Querying data with date time: " + requestDateTime.ToString("u")); var skipCount = 0; @@ -59,7 +59,7 @@ public class EntryQueryRoute : RouteBaseSync.WithRequest<EntryQueryPayload>.With switch (entryQuery.Duration) { case TimeEntryQueryDuration.TODAY: var baseTodaysEntries = baseQuery - .Where(c => DateTime.Compare(c.Start.AddHours(offsetInHours).Date, DateTime.UtcNow.Date) == 0); + .Where(c => DateTime.Compare(c.Start.AddHours(offsetInHours).Date, AppDateTime.UtcNow.Date) == 0); var baseTodaysEntriesCount = baseTodaysEntries.Count(); if (baseTodaysEntriesCount == 0) { @@ -74,10 +74,10 @@ public class EntryQueryRoute : RouteBaseSync.WithRequest<EntryQueryPayload>.With result.Results.AddRange(pagedTodaysEntries.Select(c => c.AsDto)); break; case TimeEntryQueryDuration.THIS_WEEK: - var lastMonday = DateTime.UtcNow.StartOfWeek(DayOfWeek.Monday); + var lastMonday = AppDateTime.UtcNow.StartOfWeek(DayOfWeek.Monday); var baseEntriesThisWeek = baseQuery - .Where(c => c.Start.AddHours(offsetInHours).Date >= lastMonday.Date && c.Start.AddHours(offsetInHours).Date <= DateTime.UtcNow.Date); + .Where(c => c.Start.AddHours(offsetInHours).Date >= lastMonday.Date && c.Start.AddHours(offsetInHours).Date <= AppDateTime.UtcNow.Date); var baseEntriesThisWeekCount = baseEntriesThisWeek.Count(); @@ -94,8 +94,8 @@ public class EntryQueryRoute : RouteBaseSync.WithRequest<EntryQueryPayload>.With break; case TimeEntryQueryDuration.THIS_MONTH: var baseEntriesThisMonth = baseQuery - .Where(c => c.Start.AddHours(offsetInHours).Month == DateTime.UtcNow.Month - && c.Start.AddHours(offsetInHours).Year == DateTime.UtcNow.Year); + .Where(c => c.Start.AddHours(offsetInHours).Month == AppDateTime.UtcNow.Month + && c.Start.AddHours(offsetInHours).Year == AppDateTime.UtcNow.Year); var baseEntriesThisMonthCount = baseEntriesThisMonth.Count(); if (baseEntriesThisMonthCount == 0) { return NoContent(); @@ -110,7 +110,7 @@ public class EntryQueryRoute : RouteBaseSync.WithRequest<EntryQueryPayload>.With break; case TimeEntryQueryDuration.THIS_YEAR: var baseEntriesThisYear = baseQuery - .Where(c => c.Start.AddHours(offsetInHours).Year == DateTime.UtcNow.Year); + .Where(c => c.Start.AddHours(offsetInHours).Year == AppDateTime.UtcNow.Year); var baseEntriesThisYearCount = baseEntriesThisYear.Count(); if (baseEntriesThisYearCount == 0) { diff --git a/server/src/Services/ForgotPasswordService.cs b/server/src/Services/ForgotPasswordService.cs index 6874d37..b7e99ad 100644 --- a/server/src/Services/ForgotPasswordService.cs +++ b/server/src/Services/ForgotPasswordService.cs @@ -28,7 +28,7 @@ public class ForgotPasswordService return default; } - _logger.LogInformation($"Found forgot password request for user: {request.User.Username}, expires at {request.ExpirationDate} (in {request.ExpirationDate.Subtract(DateTime.UtcNow).Minutes} minutes)."); + _logger.LogInformation($"Found forgot password request for user: {request.User.Username}, expires at {request.ExpirationDate} (in {request.ExpirationDate.Subtract(AppDateTime.UtcNow).Minutes} minutes)."); return request; } @@ -83,7 +83,7 @@ If you did not request a password reset, no action is required. Task.Run(() => { #pragma warning restore 4014 _mailService.SendMail(message); - _logger.LogInformation($"Added forgot password request for user: {request.User.Username}, expires in {request.ExpirationDate.Subtract(DateTime.UtcNow)}."); + _logger.LogInformation($"Added forgot password request for user: {request.User.Username}, expires in {request.ExpirationDate.Subtract(AppDateTime.UtcNow)}."); }, cancellationToken); } diff --git a/server/src/Utilities/GithubAuthenticationHelpers.cs b/server/src/Utilities/GithubAuthenticationHelpers.cs index f924ecc..f78e1ae 100644 --- a/server/src/Utilities/GithubAuthenticationHelpers.cs +++ b/server/src/Utilities/GithubAuthenticationHelpers.cs @@ -52,7 +52,7 @@ public static class GithubAuthenticationHelpers if (!handled) { var userId = Guid.NewGuid(); - var insertUserQuery = $@"INSERT INTO users VALUES ('{userId}', '{githubUsername}', '', '{DateTime.UtcNow}')"; + var insertUserQuery = $@"INSERT INTO users VALUES ('{userId}', '{githubUsername}', '', '{AppDateTime.UtcNow}')"; await connection.OpenAsync(); await using var insertUserCommand = new NpgsqlCommand(insertUserQuery, connection); await insertUserCommand.ExecuteNonQueryAsync(); |
