using SqlSugar;

namespace QYZH.InteractiveMagazine.Models.Entity
{
    /// <summary>
    /// Snapshot record for a user answer.
    /// </summary>
    [SugarTable("JournalPageTaskUserAnswerSnapshot")]
    public class JournalPageTaskUserAnswerSnapshot : SqlSugarBaseEntity
    {
        /// <summary>
        /// Source JournalPageTaskUserAnswer record Id.
        /// </summary>
        public long JournalPageTaskUserAnswerId { get; set; }

        /// <summary>
        /// Journal Id.
        /// </summary>
        public long JournalId { get; set; }

        /// <summary>
        /// Journal page Id.
        /// </summary>
        public long JournalPageId { get; set; }

        /// <summary>
        /// Journal page task Id.
        /// </summary>
        public long JournalPageTaskId { get; set; }

        /// <summary>
        /// Journal page task group Id.
        /// </summary>
        public long JournalPageTaskGroupId { get; set; }

        /// <summary>
        /// User Id.
        /// </summary>
        public long UserId { get; set; }

        /// <summary>
        /// Answer result.
        /// </summary>
        public string? Result { get; set; }

        /// <summary>
        /// Points awarded.
        /// </summary>
        public int Points { get; set; }

        /// <summary>
        /// Growth points awarded.
        /// </summary>
        public float GrowthPoints { get; set; }

        /// <summary>
        /// Task score.
        /// </summary>
        public float Score { get; set; }

        /// <summary>
        /// Comprehension score.
        /// </summary>
        public float Comprehension { get; set; }

        /// <summary>
        /// Judgment score.
        /// </summary>
        public float Judgment { get; set; }

        /// <summary>
        /// Expression score.
        /// </summary>
        public float Expression { get; set; }

        /// <summary>
        /// Persuasiveness score.
        /// </summary>
        public float Persuasiveness { get; set; }

        /// <summary>
        /// Question answer image URL.
        /// </summary>
        public string? QuestionAnswerUrl { get; set; }

        /// <summary>
        /// Answer image URL.
        /// </summary>
        public string? AnswerUrl { get; set; }

        /// <summary>
        /// Page answer image URL.
        /// </summary>
        public string? PageAnswerUrl { get; set; }

        /// <summary>
        /// Optimistic concurrency revision.
        /// </summary>
        public int Revision { get; set; }        

        /// <summary>
        /// Answer start time.
        /// </summary>
        public DateTime AnswerStartTime { get; set; }

        /// <summary>
        /// Answer end time.
        /// </summary>
        public DateTime AnswerEndTime { get; set; }

        /// <summary>
        /// Answer duration in seconds.
        /// </summary>
        public int AnswerSeconds { get; set; }

        /// <summary>
        /// Image recognition result.
        /// </summary>
        public int ImageRecognition { get; set; }

        /// <summary>
        /// Journal page number.
        /// </summary>
        public int JournalPageNum { get; set; }

        /// <summary>
        /// Modify count.
        /// </summary>
        public int Modify { get; set; }

        /// <summary>
        /// Last tag Id.
        /// </summary>
        public long LastTag { get; set; }

        /// <summary>
        /// Dot page number.
        /// </summary>
        public int DotPageNum { get; set; }

        /// <summary>
        /// Page result image URL.
        /// </summary>
        public string? PageResultUrl { get; set; }

        /// <summary>
        /// Question type.
        /// </summary>
        public string? Type { get; set; }

        /// <summary>
        /// Dot page number text.
        /// </summary>
        public string? DotPageNo { get; set; }

        /// <summary>
        /// Page answer dot image URL.
        /// </summary>
        public string? PageAnswerDotUrl { get; set; }

        /// <summary>
        /// Break count.
        /// </summary>
        public int BreakCount { get; set; }

        /// <summary>
        /// Break time records.
        /// </summary>
        public string? BreakTimes { get; set; }

        /// <summary>
        /// Assignment status.
        /// </summary>
        public string? AssignmentStatus { get; set; }
    }
}
