using IRaCIS.Core.Domain.Share;

namespace IRaCIS.Core.Domain.Models;


[Comment("受试者访视 - QC质疑")]
[Table("QCChallenge")]
public class QCChallenge : BaseAddAuditEntity
{
    #region 导航属性
    [JsonIgnore]
    [ForeignKey("LatestReplyUserId")]
    public User LatestReplyUser { get; set; }
    [JsonIgnore]
    [Comment("导航属性")]
    [ForeignKey("SubjectVisitId")]
    public SubjectVisit SubjectVisit { get; set; }

    [JsonIgnore]
    public List<QCChallengeDialog> DialogList { get; set; } = new List<QCChallengeDialog>();

    #endregion
    public Guid TrialId { get; set; }
    public Guid SubjectVisitId { get; set; }

    public DateTime? DeadlineTime { get; set; }

    [StringLength(1000)]
    public string Note { get; set; } = string.Empty;

    public QCChanllengeReuploadEnum ReuploadEnum { get; set; }
    public DateTime? ReUploadedTime { get; set; }

    public string ReUploader { get; set; } = string.Empty;

    public Guid? ReUploadUserId { get; set; }

    public TrialQCProcess QCProcessEnum { get; set; }

    public CurrentQC CurrentQCEnum { get; set; }

    public DateTime? LatestMsgTime { get; set; }
    public Guid? LatestReplyUserId { get; set; }
    public string ChallengeCode { get; set; } = string.Empty;

    public int Code { get; set; }
    public bool IsClosed { get; set; }

    public DateTime? ClosedTime { get; set; }

    public string ClosedUser { get; set; } = string.Empty;
    public QCChallengeCloseEnum CloseResonEnum { get; set; }

    [StringLength(1200)]
    public string Content { get; set; } = string.Empty;

    [StringLength(1000)]
    public string ActionContent { get; set; } = string.Empty;

    public UserTypeEnum UserTypeEnum { get; set; }
    public string ChallengeType { get; set; } = string.Empty;
}