From 713f2bfadc14e757edee5f5aae4e0a92f6fa63a4 Mon Sep 17 00:00:00 2001 From: Catherine Renelle <32781029+catrenelle@users.noreply.github.com> Date: Mon, 9 Feb 2026 23:39:56 -0500 Subject: [PATCH] Fix date handling to use DateTimeKind.Utc for Npgsql ParseDateArg now applies DateTime.SpecifyKind(Utc) since TryParse returns Unspecified kind. Also fixed the spending report fallback start date to use the DateTimeKind.Utc constructor overload. Co-Authored-By: Claude Opus 4.6 --- src/Purrse.Api/Services/ChatService.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Purrse.Api/Services/ChatService.cs b/src/Purrse.Api/Services/ChatService.cs index ee64b93..cca00d3 100644 --- a/src/Purrse.Api/Services/ChatService.cs +++ b/src/Purrse.Api/Services/ChatService.cs @@ -473,7 +473,7 @@ public class ChatService : IChatService private async Task<(string, object, string)> ExecuteGetSpendingByCategoryAsync(Guid userId, Dictionary args) { - var startDate = ParseDateArg(args, "start_date") ?? new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1); + var startDate = ParseDateArg(args, "start_date") ?? new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1, 0, 0, 0, DateTimeKind.Utc); var endDate = ParseDateArg(args, "end_date") ?? DateTime.UtcNow; var report = await _reportService.GetSpendingByCategoryAsync(userId, startDate, endDate); @@ -714,7 +714,8 @@ public class ChatService : IChatService { var str = ParseStringArg(args, key); if (str == null) return null; - return DateTime.TryParse(str, out var dt) ? dt : null; + if (!DateTime.TryParse(str, out var dt)) return null; + return DateTime.SpecifyKind(dt, DateTimeKind.Utc); } private static Guid? ParseGuidArg(Dictionary args, string key)