using YBEE.EQM.Core;

namespace YBEE.EQM.Application;

/// <summary>
/// 添加监测计划输入参数
/// </summary>
public class AddExamPlanInput
{
    /// <summary>
    /// 学段：学前小初高
    /// </summary>
    [Required]
    public EducationStage EducationStage { get; set; }
    /// <summary>
    /// 学期ID
    /// </summary>
    [Required]
    public short SemesterId { get; set; }
    ///// <summary>
    ///// 监测期间类型：期末、期中、平时
    ///// </summary>
    //[Required]
    //public ExamPeriodType ExamPeriodType { get; set; } = ExamPeriodType.NONE;
    ///// <summary>
    ///// 监测类型：学业质量、教育质量
    ///// </summary>
    //[Required]
    //public ExamType ExamType { get; set; } = ExamType.NONE;
    /// <summary>
    /// 名称
    /// </summary>
    [Required, StringLength(100)]
    public string Name { get; set; }
    /// <summary>
    /// 全称
    /// </summary>
    [Required, StringLength(200)]
    public string FullName { get; set; }
    /// <summary>
    /// 简称
    /// </summary>
    [Required, StringLength(50)]
    public string ShortName { get; set; }

    /// <summary>
    /// 备注
    /// </summary>
    [StringLength(200)]
    public string Remark { get; set; } = "";
    /// <summary>
    /// 监测配置
    /// </summary>
    [Required]
    public string Config { get; set; } = "{}";

    /// <summary>
    /// 监测年级
    /// </summary>
    [Required]
    public List<short> GradeIdList { get; set; } = new();
}

/// <summary>
/// 更新监测计划输入参数
/// </summary>
public class UpdateExamPlanInput
{
    /// <summary>
    /// 主键
    /// </summary>
    [Required]
    public int Id { get; set; }
    /// <summary>
    /// 名称
    /// </summary>
    [Required, StringLength(100)]
    public string Name { get; set; }
    /// <summary>
    /// 全称
    /// </summary>
    [Required, StringLength(200)]
    public string FullName { get; set; }
    /// <summary>
    /// 简称
    /// </summary>
    [Required, StringLength(50)]
    public string ShortName { get; set; }

    /// <summary>
    /// 备注
    /// </summary>
    [StringLength(200)]
    public string Remark { get; set; } = "";
    /// <summary>
    /// 监测配置
    /// </summary>
    [Required]
    public string Config { get; set; } = "{}";
}

/// <summary>
/// 分页查询监测计划输入参数
/// </summary>
public class ExamPlanPageInput : PageInputBase
{
    /// <summary>
    /// 学段：学前小初高
    /// </summary>
    public EducationStage? EducationStage { get; set; }
    /// <summary>
    /// 学期ID
    /// </summary>
    public short? SemesterId { get; set; }
    /// <summary>
    /// 名称
    /// </summary>
    public string Name { get; set; }
    /// <summary>
    /// 状态
    /// </summary>
    public ExamStatus? Status { get; set; }
}
