using Exam.Infrastructure.Data.Entity;
using Exam.Infrastructure.Data.Interface;
using Exam.Infrastructure.Enums;
using Hotline.Share.Enums.CallCenter;
using Hotline.Share.Enums.Exams;
using Hotline.Share.Exams.Interface;
using System.ComponentModel;
using System.Text.Json.Serialization;

namespace Hotline.Share.Dtos.TestPapers
{
    /// <summary>
    /// 试卷规则
    /// </summary>
    [Description("试卷规则")]
    public class TestPaperRuleDto : UpdateTestPaperRuleDto
    {
        /// <summary>
        /// 组卷规则标签
        /// </summary>
        [Description("组卷规则标签")]
        public new List<TestPaperRuleTagDto> TestPaperRuleTagDtos { get; set; }

    }

    public class AddTestPaperRuleDto : IAddRequest,IOperationStatus
    {
        /// <summary>
        /// 试卷Id
        /// </summary>
        [Description("试卷Id")]
        public string TestPaperId { get; set; }

        /// <summary>
        /// 试题类型
        /// </summary>
        [Description("试题类型")]
        public EQuestionType QuestionType { get; set; }

        /// <summary>
        /// 试题难度
        /// </summary>
        [Description("试题难度")]
        public EDifficultyLevel DifficultyLevel { get; set; }

        /// <summary>
        /// 试题数量
        /// </summary>
        [Description("试题数量")]
        public int Count { get; set; }

        /// <summary>
        /// 排序
        /// </summary>
        [Description("排序")]
        public int SortIndex { get; set; }

        /// <summary>
        /// 组卷规则标签
        /// </summary>
        [Description("组卷规则标签")]
        public List<AddTestPaperRuleTagDto> TestPaperRuleTagDtos { get; set; }

        /// <summary>
        /// 操作状态        
        /// </summary>
        [Description("操作状态")]
        public EEOperationStatus OperationStatus { get; set; }
    }

    public class UpdateTestPaperRuleDto : AddTestPaperRuleDto, IActionRequest
    {
        /// <summary>
        /// 主键
        /// </summary>
        [Description("主键")]
        public string Id { get; set; }

        /// <summary>
        /// 组卷规则标签
        /// </summary>
        [Description("组卷规则标签")]
        public new List<UpdateTestPaperRuleTagDto> TestPaperRuleTagDtos { get; set; }
    }
}
