using YBEE.EQM.Core;

namespace YBEE.EQM.Application;

/// <summary>
/// 导入缺测替补输入参数
/// </summary>
public class ImportExamAbsentReplaceItem
{
    /// <summary>
    /// 监测计划ID
    /// </summary>
    [Required]
    public int ExamPlanId { get; set; }
    /// <summary>
    /// 监测年级ID
    /// </summary>
    [Required]
    public int ExamGradeId { get; set; }
    /// <summary>
    /// 年级ID
    /// </summary>
    [Required]
    public short GradeId { get; set; }
    /// <summary>
    /// 班级号
    /// </summary>
    [Required]
    public short ClassNumber { get; set; }
    /// <summary>
    /// 缺测学生姓名
    /// </summary>
    [Required, StringLength(100)]
    public string AbsentName { get; set; }
    /// <summary>
    /// 缺测学生监测号
    /// </summary>
    [Required, StringLength(20)]
    public string AbsentExamNumber { get; set; }
    /// <summary>
    /// 缺测科目
    /// </summary>
    [Required]
    public string AbsentCourses { get; set; }
    /// <summary>
    /// 缺测原因
    /// </summary>
    [Required, StringLength(200)]
    public string AbsentReason { get; set; }
    /// <summary>
    /// 是否有替补
    /// </summary>
    [Required]
    public bool IsReplaced { get; set; } = false;
    /// <summary>
    /// 替补学生姓名
    /// </summary>
    [StringLength(100)]
    public string ReplaceName { get; set; }
    /// <summary>
    /// 替补学生监测号
    /// </summary>
    [StringLength(20)]
    public string ReplaceExamNumber { get; set; }
    /// <summary>
    /// 家长姓名
    /// </summary>
    [StringLength(100)]
    public string PatriarchName { get; set; }
    /// <summary>
    /// 家长电话
    /// </summary>
    [StringLength(50)]
    public string PatriarchTel { get; set; }
    /// <summary>
    /// 备注
    /// </summary>
    public string Remark { get; set; }
}

/// <summary>
/// 导入缺测替补输入参数
/// </summary>
public class ImportExamAbsentReplaceInput
{
    /// <summary>
    /// 监测计划ID
    /// </summary>
    [Required]
    public int ExamPlanId { get; set; }
    /// <summary>
    /// 机构ID
    /// </summary>
    public short? SysOrgId { get; set; }
    /// <summary>
    /// 校区ID
    /// </summary>
    public short? SysOrgBranchId { get; set; }
    /// <summary>
    /// 导入行
    /// </summary>
    [Required]
    public List<ImportExamAbsentReplaceItem> Items { get; set; }
    /// <summary>
    /// 数据导入模式
    /// </summary>
    [Required]
    public DataImportMode DataImportMode { get; set; }
}

/// <summary>
/// 添加缺测替补上报输入参数
/// </summary>
public class AddExamAbsentReplaceInput
{
    /// <summary>
    /// 监测计划ID
    /// </summary>
    [Required]
    public int ExamPlanId { get; set; }
    /// <summary>
    /// 机构ID
    /// </summary>
    [Required]
    public short SysOrgId { get; set; }
    /// <summary>
    /// 校区ID
    /// </summary>
    public short? SysOrgBranchId { get; set; }
    /// <summary>
    /// 监测年级ID
    /// </summary>
    [Required]
    public int ExamGradeId { get; set; }
    /// <summary>
    /// 年级ID
    /// </summary>
    [Required]
    public short GradeId { get; set; }
    /// <summary>
    /// 班级ID
    /// </summary>
    [Required]
    public long SchoolClassId { get; set; }
    /// <summary>
    /// 班号
    /// </summary>
    [Required]
    public short ClassNumber { get; set; }
    /// <summary>
    /// 缺测学生姓名
    /// </summary>
    [Required, StringLength(100)]
    public string AbsentName { get; set; }
    /// <summary>
    /// 缺测学生监测号
    /// </summary>
    [Required, StringLength(20)]
    public string AbsentExamNumber { get; set; }
    /// <summary>
    /// 缺测科目
    /// </summary>
    [Required]
    public string AbsentCourses { get; set; } = "[]";
    /// <summary>
    /// 缺测原因
    /// </summary>
    [Required, StringLength(200)]
    public string AbsentReason { get; set; }

    /// <summary>
    /// 是否有替补
    /// </summary>
    [Required]
    public bool IsReplaced { get; set; } = false;
    /// <summary>
    /// 替补学生姓名
    /// </summary>
    [StringLength(100)]
    public string ReplaceName { get; set; }
    /// <summary>
    /// 替补学生监测号
    /// </summary>
    [StringLength(20)]
    public string ReplaceExamNumber { get; set; }

    /// <summary>
    /// 家长姓名
    /// </summary>
    [StringLength(100)]
    public string PatriarchName { get; set; }
    /// <summary>
    /// 家长电话
    /// </summary>
    [StringLength(50)]
    public string PatriarchTel { get; set; }
    /// <summary>
    /// 备注
    /// </summary>
    [StringLength(200)]
    public string Remark { get; set; }
}
/// <summary>
/// 更新缺测替补上报输入参数
/// </summary>
public class UpdateExamAbsentReplaceInput : AddExamAbsentReplaceInput
{
    /// <summary>
    /// 主键
    /// </summary>
    [Required]
    public int Id { get; set; }
}
/// <summary>
/// 清空缺测替补输入参数
/// </summary>
public class ClearExamAbsentReplaceInput
{
    /// <summary>
    /// 监测计划ID
    /// </summary>
    [Required]
    public int ExamPlanId { get; set; }
}
/// <summary>
/// 分页查询缺测替补输入参数
/// </summary>
public class ExamAbsentReplacePageInput : PageInputBase
{
    /// <summary>
    /// 监测计划ID
    /// </summary>
    [Required]
    public int ExamPlanId { get; set; }
    /// <summary>
    /// 机构ID
    /// </summary>
    public short? SysOrgId { get; set; }
    /// <summary>
    /// 校区ID
    /// </summary>
    public short? SysOrgBranchId { get; set; }
    /// <summary>
    /// 年级ID
    /// </summary>
    public short? GradeId { get; set; }
    /// <summary>
    /// 班级号
    /// </summary>
    public short? ClassNumber { get; set; }
    /// <summary>
    /// 缺测学生姓名
    /// </summary>
    [StringLength(100)]
    public string AbsentName { get; set; }
    /// <summary>
    /// 缺测学生监测号
    /// </summary>
    [StringLength(20)]
    public string AbsentExamNumber { get; set; }
    /// <summary>
    /// 缺测科目
    /// </summary>
    public short? AbentCourseId { get; set; }
    /// <summary>
    /// 缺测原因
    /// </summary>
    [StringLength(200)]
    public string AbsentReason { get; set; }
    /// <summary>
    /// 是否有替补
    /// </summary>
    public bool? IsReplaced { get; set; }
    /// <summary>
    /// 替补学生姓名
    /// </summary>
    [StringLength(100)]
    public string ReplaceName { get; set; }
    /// <summary>
    /// 替补学生监测号
    /// </summary>
    [StringLength(20)]
    public string ReplaceExamNumber { get; set; }
    /// <summary>
    /// 家长电话
    /// </summary>
    [StringLength(50)]
    public string PatriarchTel { get; set; }
    /// <summary>
    /// 备注
    /// </summary>
    public string Remark { get; set; }

    /// <summary>
    /// 状态
    /// </summary>
    public AuditStatus? Status { get; set; }
}

/// <summary>
/// 缺测替补审核输入参数
/// </summary>
public class ExamAbsentReplaceAuditInput
{
    /// <summary>
    /// 缺测替补学生ID列表
    /// </summary>
    public List<int> Ids { get; set; }
    /// <summary>
    /// 是否通过
    /// </summary>
    public bool IsApproved { get; set; }
    /// <summary>
    /// 审核意见
    /// </summary>
    public string Remark { get; set; }
}