From 13537c640cd0c5b88a3e4cbd741f956c54a3c300 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Sep 2025 13:25:33 +0000 Subject: [PATCH 1/2] Initial plan From b64140a1e88cba60e30b79cb95967ff6984b647b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 26 Sep 2025 13:31:50 +0000 Subject: [PATCH 2/2] Rename TimeZoneTimeProvider class to RequestTimeProvider and update all references Co-authored-by: marcominerva <3522534+marcominerva@users.noreply.github.com> --- ...{TimeZoneTimeProvider.cs => RequestTimeProvider.cs} | 2 +- .../Templating/HandlebarsTemplateEngine.cs | 10 +++++----- .../Templating/RazorTemplateEngine.cs | 6 +++--- .../Templating/ScribanTemplateEngine.cs | 4 ++-- src/PdfSmith/Program.cs | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) rename src/PdfSmith.BusinessLayer/Services/{TimeZoneTimeProvider.cs => RequestTimeProvider.cs} (70%) diff --git a/src/PdfSmith.BusinessLayer/Services/TimeZoneTimeProvider.cs b/src/PdfSmith.BusinessLayer/Services/RequestTimeProvider.cs similarity index 70% rename from src/PdfSmith.BusinessLayer/Services/TimeZoneTimeProvider.cs rename to src/PdfSmith.BusinessLayer/Services/RequestTimeProvider.cs index 08973a8..295cb65 100644 --- a/src/PdfSmith.BusinessLayer/Services/TimeZoneTimeProvider.cs +++ b/src/PdfSmith.BusinessLayer/Services/RequestTimeProvider.cs @@ -2,7 +2,7 @@ namespace PdfSmith.BusinessLayer.Services; -public class TimeZoneTimeProvider(ITimeZoneService timeZoneService) : TimeProvider +public class RequestTimeProvider(ITimeZoneService timeZoneService) : TimeProvider { public override TimeZoneInfo LocalTimeZone => timeZoneService.GetTimeZone() ?? TimeZoneInfo.Utc; } diff --git a/src/PdfSmith.BusinessLayer/Templating/HandlebarsTemplateEngine.cs b/src/PdfSmith.BusinessLayer/Templating/HandlebarsTemplateEngine.cs index 676a617..34e7398 100644 --- a/src/PdfSmith.BusinessLayer/Templating/HandlebarsTemplateEngine.cs +++ b/src/PdfSmith.BusinessLayer/Templating/HandlebarsTemplateEngine.cs @@ -6,9 +6,9 @@ namespace PdfSmith.BusinessLayer.Templating; -public class HandlebarsTemplateEngine(TimeZoneTimeProvider timeZoneTimeProvider) : ITemplateEngine +public class HandlebarsTemplateEngine(RequestTimeProvider requestTimeProvider) : ITemplateEngine { - private readonly Lazy handlebarsInstance = new(() => CreateHandlebarsInstance(timeZoneTimeProvider)); + private readonly Lazy handlebarsInstance = new(() => CreateHandlebarsInstance(requestTimeProvider)); public Task RenderAsync(string template, object? model, CultureInfo culture, CancellationToken cancellationToken = default) { @@ -32,7 +32,7 @@ public Task RenderAsync(string template, object? model, CultureInfo cult } } - private static IHandlebars CreateHandlebarsInstance(TimeZoneTimeProvider timeZoneTimeProvider) + private static IHandlebars CreateHandlebarsInstance(RequestTimeProvider requestTimeProvider) { var handlebars = Handlebars.Create(); @@ -92,7 +92,7 @@ private static IHandlebars CreateHandlebarsInstance(TimeZoneTimeProvider timeZon var format = arguments.ElementAtOrDefault(0)?.ToString() ?? $"{CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern} {CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern}"; - var now = timeZoneTimeProvider.GetLocalNow().DateTime; + var now = requestTimeProvider.GetLocalNow().DateTime; return now.ToString(format, CultureInfo.CurrentCulture); }); @@ -101,7 +101,7 @@ private static IHandlebars CreateHandlebarsInstance(TimeZoneTimeProvider timeZon var format = arguments.ElementAtOrDefault(0)?.ToString() ?? $"{CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern} {CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern}"; - var now = timeZoneTimeProvider.GetUtcNow().DateTime; + var now = requestTimeProvider.GetUtcNow().DateTime; return now.ToString(format, CultureInfo.CurrentCulture); }); diff --git a/src/PdfSmith.BusinessLayer/Templating/RazorTemplateEngine.cs b/src/PdfSmith.BusinessLayer/Templating/RazorTemplateEngine.cs index f91eb71..64824b5 100644 --- a/src/PdfSmith.BusinessLayer/Templating/RazorTemplateEngine.cs +++ b/src/PdfSmith.BusinessLayer/Templating/RazorTemplateEngine.cs @@ -13,14 +13,14 @@ public async Task RenderAsync(string template, object? model, CultureInf { try { - var sanitizedTemplate = DateTimeNowRegex.Replace(template, "@timeZoneTimeProvider.GetLocalNow().DateTime"); - sanitizedTemplate = DateTimeOffsetNowRegex.Replace(sanitizedTemplate, "@timeZoneTimeProvider.GetLocalNow()"); + var sanitizedTemplate = DateTimeNowRegex.Replace(template, "@requestTimeProvider.GetLocalNow().DateTime"); + sanitizedTemplate = DateTimeOffsetNowRegex.Replace(sanitizedTemplate, "@requestTimeProvider.GetLocalNow()"); var content = $""" @using System @using System.Collections.Generic @using System.Linq - @inject PdfSmith.BusinessLayer.Services.TimeZoneTimeProvider timeZoneTimeProvider + @inject PdfSmith.BusinessLayer.Services.RequestTimeProvider requestTimeProvider {sanitizedTemplate} """; diff --git a/src/PdfSmith.BusinessLayer/Templating/ScribanTemplateEngine.cs b/src/PdfSmith.BusinessLayer/Templating/ScribanTemplateEngine.cs index 64d2cad..f02587a 100644 --- a/src/PdfSmith.BusinessLayer/Templating/ScribanTemplateEngine.cs +++ b/src/PdfSmith.BusinessLayer/Templating/ScribanTemplateEngine.cs @@ -8,7 +8,7 @@ namespace PdfSmith.BusinessLayer.Templating; -public partial class ScribanTemplateEngine(TimeZoneTimeProvider timeZoneTimeProvider) : ITemplateEngine +public partial class ScribanTemplateEngine(RequestTimeProvider requestTimeProvider) : ITemplateEngine { private const string DateTimeZonePlaceholder = "datetime_withzone"; @@ -27,7 +27,7 @@ public async Task RenderAsync(string text, object? model, CultureInfo cu context.PushCulture(culture); var dateWithTimeZoneScript = new ScriptObject(); - dateWithTimeZoneScript.Import(DateTimeZonePlaceholder, new Func(() => timeZoneTimeProvider.GetLocalNow().DateTime)); + dateWithTimeZoneScript.Import(DateTimeZonePlaceholder, new Func(() => requestTimeProvider.GetLocalNow().DateTime)); context.PushGlobal(dateWithTimeZoneScript); var result = await template.RenderAsync(context); diff --git a/src/PdfSmith/Program.cs b/src/PdfSmith/Program.cs index 8cae057..30ba50f 100644 --- a/src/PdfSmith/Program.cs +++ b/src/PdfSmith/Program.cs @@ -37,7 +37,7 @@ builder.Services.AddHttpContextAccessor(); builder.Services.AddSingleton(TimeProvider.System); -builder.Services.AddSingleton(); +builder.Services.AddSingleton(); builder.Services.AddSingleton();