From 078d1160d7571fefce0eccb70c1c7f41244040fa Mon Sep 17 00:00:00 2001 From: jessikitty Date: Wed, 6 May 2026 14:39:40 +1000 Subject: [PATCH] feat: add Technicians, GoogleSheetConfig, DiscoBaseUrl to config --- Models/ServiceTrackerConfig.cs | 78 +++++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 20 deletions(-) diff --git a/Models/ServiceTrackerConfig.cs b/Models/ServiceTrackerConfig.cs index c99d9f5..a7c9c83 100644 --- a/Models/ServiceTrackerConfig.cs +++ b/Models/ServiceTrackerConfig.cs @@ -1,29 +1,31 @@ -using System; using System.Collections.Generic; namespace Disco.Plugins.ServiceTracker.Models { - /// - /// Plugin configuration for custom priorities, locations, and SLA timeframes. - /// Stored as JSON in the plugin data directory. - /// public class ServiceTrackerConfig { public List Priorities { get; set; } public List Locations { get; set; } public List StatusOptions { get; set; } + public List Technicians { get; set; } public bool AutoCreateTicketsForNewJobs { get; set; } public string DefaultPriorityId { get; set; } public string DefaultLocationId { get; set; } public int DashboardRefreshSeconds { get; set; } + public string DiscoBaseUrl { get; set; } + public int DetailInactivitySeconds { get; set; } + public GoogleSheetConfig GoogleSheet { get; set; } public ServiceTrackerConfig() { Priorities = new List(); Locations = new List(); StatusOptions = new List(); + Technicians = new List(); AutoCreateTicketsForNewJobs = true; DashboardRefreshSeconds = 60; + DetailInactivitySeconds = 300; + DiscoBaseUrl = "http://disco:9292"; } public static ServiceTrackerConfig CreateDefault() @@ -41,28 +43,41 @@ namespace Disco.Plugins.ServiceTracker.Models Locations = new List { new DeviceLocation { Id = "it-office", Name = "IT Office", Icon = "💻", Color = "#337AB7", IsDefault = true }, - new DeviceLocation { Id = "with-user", Name = "With User", Icon = "👤", Color = "#5CB85C", IsDefault = false }, - new DeviceLocation { Id = "at-repairer", Name = "At Repairer", Icon = "🔧", Color = "#F0AD4E", IsDefault = false }, - new DeviceLocation { Id = "in-transit", Name = "In Transit", Icon = "🚚", Color = "#5BC0DE", IsDefault = false }, - new DeviceLocation { Id = "storage", Name = "Storage/Spare Pool", Icon = "📦", Color = "#777777", IsDefault = false }, - new DeviceLocation { Id = "disposed", Name = "Disposed/Written Off", Icon = "❌", Color = "#999999", IsDefault = false } + new DeviceLocation { Id = "with-user", Name = "With User", Icon = "👤", Color = "#5CB85C" }, + new DeviceLocation { Id = "at-repairer", Name = "At Repairer", Icon = "🔧", Color = "#F0AD4E" }, + new DeviceLocation { Id = "in-transit", Name = "In Transit", Icon = "🚚", Color = "#5BC0DE" }, + new DeviceLocation { Id = "storage", Name = "Storage/Spare Pool", Icon = "📦", Color = "#777777" }, + new DeviceLocation { Id = "disposed", Name = "Disposed/Written Off", Icon = "❌", Color = "#999999" } }, StatusOptions = new List { - "Triaging", - "In Progress", - "Awaiting Parts", - "Awaiting User", - "Awaiting Vendor", - "On Hold", - "Ready for Return", - "Escalated", - "Resolved" + "Triaging", "In Progress", "Awaiting Parts", "Awaiting User", + "Awaiting Vendor", "On Hold", "Ready for Return", "Escalated", "Resolved" + }, + Technicians = new List + { + new TechEntry { Id = "jess", DisplayName = "Jess Rogerson", DiscoUserIds = new List { "Curric\\st00913", "Curric\\09488098" }, Email = "Jessica.Rogerson@education.vic.gov.au" }, + new TechEntry { Id = "ruby", DisplayName = "Ruby Stolica", DiscoUserIds = new List { "curric\\st02201" }, Email = "Ruby.Stolica@education.vic.gov.au" }, + new TechEntry { Id = "gaby", DisplayName = "Gaby Aughton", DiscoUserIds = new List { "Curric\\09279223" }, Email = "Gabrielle.Aughton@education.vic.gov.au" }, + new TechEntry { Id = "other", DisplayName = "Other", DiscoUserIds = new List(), Email = "" } }, AutoCreateTicketsForNewJobs = true, DefaultPriorityId = "medium", DefaultLocationId = "it-office", - DashboardRefreshSeconds = 60 + DashboardRefreshSeconds = 60, + DetailInactivitySeconds = 300, + DiscoBaseUrl = "http://disco:9292", + GoogleSheet = new GoogleSheetConfig + { + Enabled = false, + SpreadsheetId = "1w9rVblDVyDMVedjx9tjuLoNv1w6_pfo8GC6R9uu8lXc", + GId = "170394795", + RefreshMinutes = 15, + ColTimestamp = 0, ColEmail = 1, ColDeviceName = 2, + ColLocation = 3, ColIssue = 4, ColPriority = 5, + ColStatus = 6, ColAssignedTo = 7, + HeaderRows = 1 + } }; } } @@ -85,4 +100,27 @@ namespace Disco.Plugins.ServiceTracker.Models public string Color { get; set; } public bool IsDefault { get; set; } } + + public class GoogleSheetConfig + { + public bool Enabled { get; set; } + public string SpreadsheetId { get; set; } + public string GId { get; set; } + public int RefreshMinutes { get; set; } + public int ColTimestamp { get; set; } + public int ColEmail { get; set; } + public int ColDeviceName { get; set; } + public int ColLocation { get; set; } + public int ColIssue { get; set; } + public int ColPriority { get; set; } + public int ColStatus { get; set; } + public int ColAssignedTo { get; set; } + public int HeaderRows { get; set; } + + public GoogleSheetConfig() + { + RefreshMinutes = 15; + HeaderRows = 1; + } + } }