From ff450ca43a44db405b46ebcbc2ffcb2fddbee764 Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Mon, 9 Jun 2025 10:29:43 +0200 Subject: [PATCH] Fix for Scheduled Jobs UI #5354 This PR addresses an issue where null date/time values could cause exceptions when processing job scheduling. Changes Made: - Added proper null checks for _startDate, _startTime, _endDate, _endTime, _nextDate, and _nextTime - Improved parsing safety for _retentionHistory using int.TryParse() - Added validation to fail early with meaningful error messages Impact: Prevents NullReferenceException and InvalidOperationException when date/time fields are missing --- Oqtane.Client/Modules/Admin/Jobs/Edit.razor | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Jobs/Edit.razor b/Oqtane.Client/Modules/Admin/Jobs/Edit.razor index bcb500ff..f0ff0a2c 100644 --- a/Oqtane.Client/Modules/Admin/Jobs/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Jobs/Edit.razor @@ -176,10 +176,18 @@ { job.Interval = int.Parse(_interval); } - job.StartDate = LocalToUtc(_startDate.Value.Date.Add(_startTime.Value.TimeOfDay)); - job.EndDate = LocalToUtc(_endDate.Value.Date.Add(_endTime.Value.TimeOfDay)); - job.RetentionHistory = int.Parse(_retentionHistory); - job.NextExecution = LocalToUtc(_nextDate.Value.Date.Add(_nextTime.Value.TimeOfDay)); + job.StartDate = _startDate.HasValue && _startTime.HasValue + ? LocalToUtc(_startDate.Value.Date.Add(_startTime.Value.TimeOfDay)) + : null; + + job.EndDate = _endDate.HasValue && _endTime.HasValue + ? LocalToUtc(_endDate.Value.Date.Add(_endTime.Value.TimeOfDay)) + : null; + + job.NextExecution = _nextDate.HasValue && _nextTime.HasValue + ? LocalToUtc(_nextDate.Value.Date.Add(_nextTime.Value.TimeOfDay)) + : null; + job.RetentionHistory = int.Parse(_retentionHistory); try {