summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/src/Data/Database/ApiAccessToken.cs4
-rw-r--r--server/src/Data/Database/Base.cs4
-rw-r--r--server/src/Data/Database/ForgotPasswordRequest.cs4
-rw-r--r--server/src/Data/Dtos/UserArchiveDto.cs2
-rw-r--r--server/src/Data/Static/AppDateTime.cs16
-rw-r--r--server/src/Endpoints/Internal/Account/GetArchiveRoute.cs2
-rw-r--r--server/src/Endpoints/Internal/PasswordResetRequests/CreateResetRequestRoute.cs4
-rw-r--r--server/src/Endpoints/V1/Entries/EntryQueryRoute.cs16
-rw-r--r--server/src/Services/ForgotPasswordService.cs4
-rw-r--r--server/src/Utilities/GithubAuthenticationHelpers.cs2
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();