fix: read ColCampus as location fallback; handle ColCompletionDate=-1 gracefully; update column indices for new sheet layout

This commit is contained in:
2026-09-09 10:43:45 +10:00
parent 9ff8346ea5
commit 2a8930d77b
+8 -3
View File
@@ -95,6 +95,11 @@ namespace Disco.Plugins.ServiceTracker.Services
var rawTask = RawGet(fields, _config.ColTask);
var rawIssue = RawGet(fields, _config.ColIssue);
// Location: prefer the Location/Classroom column; fall back to Campus column if empty
var location = SafeGet(fields, _config.ColLocation);
if (string.IsNullOrEmpty(location) && _config.ColCampus >= 0)
location = SafeGet(fields, _config.ColCampus);
var ticket = new ExternalTicket
{
Source = "ntt",
@@ -103,7 +108,7 @@ namespace Disco.Plugins.ServiceTracker.Services
RequesterName = SafeGet(fields, _config.ColRequestedBy),
TaskTitle = SafeGet(fields, _config.ColTask),
DeviceName = SafeGet(fields, _config.ColTask),
Location = SafeGet(fields, _config.ColLocation),
Location = location,
IssueDescription = SafeGet(fields, _config.ColIssue) ?? SafeGet(fields, _config.ColTask),
RawPriority = SafeGet(fields, _config.ColPriority),
RawStatus = SafeGet(fields, _config.ColStatus),
@@ -153,8 +158,8 @@ namespace Disco.Plugins.ServiceTracker.Services
}
private string SafeGet(List<string> fields, int index) { if (index < 0 || index >= fields.Count) return null; var val = fields[index].Trim(); return string.IsNullOrEmpty(val) ? null : val; }
private DateTime SafeGetDate(List<string> fields, int index) { var val = SafeGet(fields, index); if (val == null) return DateTime.MinValue; DateTime dt; if (DateTime.TryParse(val, out dt)) return dt; return DateTime.MinValue; }
private DateTime? SafeGetDateNullable(List<string> fields, int index) { var val = SafeGet(fields, index); if (val == null) return null; DateTime dt; if (DateTime.TryParse(val, out dt)) return dt; return null; }
private DateTime SafeGetDate(List<string> fields, int index) { var val = SafeGet(fields, index); if (val == null) return DateTime.MinValue; DateTime dt; if (DateTime.TryParse(val, System.Globalization.CultureInfo.GetCultureInfo("en-AU"), System.Globalization.DateTimeStyles.None, out dt)) return dt; if (DateTime.TryParse(val, out dt)) return dt; return DateTime.MinValue; }
private DateTime? SafeGetDateNullable(List<string> fields, int index) { var val = SafeGet(fields, index); if (val == null) return null; DateTime dt; if (DateTime.TryParse(val, System.Globalization.CultureInfo.GetCultureInfo("en-AU"), System.Globalization.DateTimeStyles.None, out dt)) return dt; if (DateTime.TryParse(val, out dt)) return dt; return null; }
private List<string> ParseCsvLine(string line)
{