From b553cc716e450a2e8fd0d61fb31aa1d5685dfa9d Mon Sep 17 00:00:00 2001 From: jessikitty Date: Tue, 5 May 2026 15:01:18 +1000 Subject: [PATCH] feat: add ServiceTicket and TicketNote models --- Models/ServiceTicket.cs | 49 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Models/ServiceTicket.cs diff --git a/Models/ServiceTicket.cs b/Models/ServiceTicket.cs new file mode 100644 index 0000000..362d20b --- /dev/null +++ b/Models/ServiceTicket.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; + +namespace Disco.Plugins.ServiceTracker.Models +{ + /// + /// Extended ticket metadata stored alongside Disco Job records. + /// Links to a Disco Job by JobId. + /// + public class ServiceTicket + { + public int JobId { get; set; } + public string PriorityId { get; set; } + public string LocationId { get; set; } + public string AssignedTechId { get; set; } + public DateTime? EstimatedCompletion { get; set; } + public DateTime? SlaDeadline { get; set; } + public string StatusOverride { get; set; } + public string Summary { get; set; } + public List Notes { get; set; } + public DateTime CreatedDate { get; set; } + public DateTime LastModifiedDate { get; set; } + public string LastModifiedBy { get; set; } + + public ServiceTicket() + { + Notes = new List(); + CreatedDate = DateTime.Now; + LastModifiedDate = DateTime.Now; + } + } + + public class TicketNote + { + public string Id { get; set; } + public string AuthorId { get; set; } + public string AuthorName { get; set; } + public DateTime Timestamp { get; set; } + public string Content { get; set; } + public string NoteType { get; set; } // "update", "escalation", "resolution", "general" + + public TicketNote() + { + Id = Guid.NewGuid().ToString("N").Substring(0, 8); + Timestamp = DateTime.Now; + NoteType = "general"; + } + } +}