using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using HelpDesk.Models.Enums; namespace HelpDesk.Models.Entities; [Table("tickets")] public class Ticket { [Key] public Guid Id { get; set; } [Required] [MaxLength(200)] public string Title { get; set; } = string.Empty; [Required] public string Description { get; set; } = string.Empty; [Required] [MaxLength(50)] public TicketStatus Status { get; set; } = TicketStatus.Open; [Required] [MaxLength(50)] public TicketPriority Priority { get; set; } = TicketPriority.Medium; [Required] [MaxLength(50)] public string TicketNumber { get; set; } = string.Empty; public Guid RequesterId { get; set; } public Guid? AssigneeId { get; set; } public Guid? GroupId { get; set; } public Guid? SlaPolicyId { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; public DateTime? FirstResponseAt { get; set; } public DateTime? ResolvedAt { get; set; } public DateTime? ClosedAt { get; set; } // Navigation public User Requester { get; set; } = null!; public User? Assignee { get; set; } public Group? Group { get; set; } public SLAPolicy? SlaPolicy { get; set; } public ICollection Comments { get; set; } = new List(); }