From 2a8930d77bf5225bd9623961185383743088c063 Mon Sep 17 00:00:00 2001 From: jessikitty Date: Wed, 9 Sep 2026 10:43:45 +1000 Subject: [PATCH] fix: read ColCampus as location fallback; handle ColCompletionDate=-1 gracefully; update column indices for new sheet layout --- Services/GoogleSheetService.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Services/GoogleSheetService.cs b/Services/GoogleSheetService.cs index 0fde520..7faddd9 100644 --- a/Services/GoogleSheetService.cs +++ b/Services/GoogleSheetService.cs @@ -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 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 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 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 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 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 ParseCsvLine(string line) {