using Exam.Infrastructure.Data.Entity;
using Exam.Infrastructure.Data.Interface;
using Hotline.Share.Enums.Exams;
using System.ComponentModel;

namespace Hotline.Share.Dtos.Questions
{
    /// <summary>
    /// 试题
    /// </summary>
    [Description("试题")]
    public class QuestionDto : UpdateQuestionDto
    {
        /// <summary>
        /// 试题标签
        /// </summary>
        [Description("试题标签")]
        public new List<QuestionTagDto> QuestionTagDtos { get; set; }

        /// <summary>
        /// 参考答案
        /// </summary>
        [Description("参考答案")]
        public new QuestionAnswerDto QuestionAnswerDto { get; set; }

        /// <summary>
        /// 试题选项
        /// </summary>
        [Description("试题选项")]
        public new List<QuestionOptionsDto> QuestionOptionsDtos { get; set; }


        /// <summary>
        /// 关联课件
        /// </summary>
        [Description("关联课件")]
        public new List<QuestionSourcewareDto> QuestionSourcewareDtos { get; set; }

        /// <summary>
        /// 关联知识
        /// </summary>
        [Description("关联知识")]
        public new List<QuestionKnowladgeDto> QuestionKnowladgeDtos { get; set; }
    }


    public class AddQuestionDto : IAddRequest
    {
        /// <summary>
        /// 题干
        /// </summary>
        [Description("题干")]
        public string Title { get; set; }

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

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

        /// <summary>
        /// 正式可用
        /// </summary>
        [Description("正式可用")]
        public bool FormalEnable { get; set; }

        /// <summary>
        /// 模拟可用
        /// </summary>
        [Description("模拟可用")]

        public bool SimulateEnable { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        [Description("备注")]
        public string Remark { get; set; }

        /// <summary>
        /// 权重
        /// </summary>
        [Description("权重")]
        public int Weight { get; set; }

        /// <summary>
        /// 试题标签
        /// </summary>
        [Description("试题标签")]
        public List<AddQuestionTagDto> QuestionTagDtos { get; set; }

        /// <summary>
        /// 参考答案
        /// </summary>
        [Description("参考答案")]
        public AddQuestionAnswerDto QuestionAnswerDto { get; set; }

        /// <summary>
        /// 试题选项
        /// </summary>
        [Description("试题选项")]
        public List<AddQuestionOptionsDto> QuestionOptionsDtos { get; set; }


        /// <summary>
        /// 关联课件
        /// </summary>
        [Description("关联课件")]
        public List<AddQuestionSourcewareDto> QuestionSourcewareDtos { get; set; }
        /// <summary>
        /// 关联知识
        /// </summary>
        [Description("关联知识")]
        public List<AddQuestionKnowladgeDto> QuestionKnowladgeDtos { get; set; }
    }

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

        /// <summary>
        /// 试题标签
        /// </summary>
        [Description("试题标签")]
        public new List<UpdateQuestionTagDto> QuestionTagDtos { get; set; }

        /// <summary>
        /// 参考答案
        /// </summary>
        [Description("参考答案")]
        public new UpdateQuestionAnswerDto QuestionAnswerDto { get; set; }

        /// <summary>
        /// 试题选项
        /// </summary>
        [Description("试题选项")]
        public new List<UpdateQuestionOptionsDto> QuestionOptionsDtos { get; set; }


        /// <summary>
        /// 关联课件
        /// </summary>
        [Description("关联课件")]
        public new List<UpdateQuestionSourcewareDto> QuestionSourcewareDtos { get; set; }

        /// <summary>
        /// 关联知识
        /// </summary>
        [Description("关联知识")]
        public new List<UpdateQuestionKnowladgeDto> QuestionKnowladgeDtos { get; set; }
    }


    public class SimpleQuestionDto : IActionRequest
    {

        /// <summary>
        /// 主键
        /// </summary>
        [Description("主键")]
        public string Id { get; set; }

        /// <summary>
        /// 题干
        /// </summary>
        [Description("题干")]
        public string Title { get; set; }
    }

    public class SimpleKnowladgeDto
    {
        /// <summary>
        /// 主键
        /// </summary>
        [Description("主键")]
        public string Id { get; set; }

        /// <summary>
        /// 知识题目
        /// </summary>
        [Description("知识题目")]
        public string Title { get; set; }
    }

  
}
