50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
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<TicketComment> Comments { get; set; } = new List<TicketComment>();
|
|
}
|