using System.Collections.Generic; namespace Disco.Plugins.ServiceTracker.Models { 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() { return new ServiceTrackerConfig { Priorities = new List { new PriorityLevel { Id = "critical", Name = "Critical", Color = "#DC3545", SortOrder = 1, SlaHours = 4, Description = "System down, no workaround" }, new PriorityLevel { Id = "high", Name = "High", Color = "#FD7E14", SortOrder = 2, SlaHours = 8, Description = "Major impact, workaround available" }, new PriorityLevel { Id = "medium", Name = "Medium", Color = "#FFC107", SortOrder = 3, SlaHours = 24, Description = "Moderate impact" }, new PriorityLevel { Id = "low", Name = "Low", Color = "#28A745", SortOrder = 4, SlaHours = 72, Description = "Minor issue, no urgency" }, new PriorityLevel { Id = "scheduled", Name = "Scheduled", Color = "#6C757D", SortOrder = 5, SlaHours = 0, Description = "Planned work, no SLA" } }, 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" }, 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" }, 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, 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 } }; } } public class PriorityLevel { public string Id { get; set; } public string Name { get; set; } public string Color { get; set; } public int SortOrder { get; set; } public int SlaHours { get; set; } public string Description { get; set; } } public class DeviceLocation { public string Id { get; set; } public string Name { get; set; } public string Icon { get; set; } 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; } } }