From 9b6666e70829e3c341e709b1b0578603566d852b Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sun, 12 Jun 2022 14:24:10 +0200 Subject: refactor: Introduce AppDateTime and use it whenever we need to get current DateTime This changes enables us to change timezones in testing --- server/src/Data/Database/ApiAccessToken.cs | 4 ++-- server/src/Data/Database/Base.cs | 4 ++-- server/src/Data/Database/ForgotPasswordRequest.cs | 4 ++-- server/src/Data/Dtos/UserArchiveDto.cs | 2 +- server/src/Data/Static/AppDateTime.cs | 16 ++++++++++++++++ 5 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 server/src/Data/Static/AppDateTime.cs (limited to 'server/src/Data') 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 /// 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(); 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; + } +} -- cgit v1.3