using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace YBEE.EQM.Core;

/// <summary>
/// 监测成绩（总分）
/// </summary>
[Comment("监测成绩（总分）")]
public class ExamScoreTotal
{
    /// <summary>
    /// 主键
    /// </summary>
    [Comment("主键")]
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }
    /// <summary>
    /// 监测计划ID
    /// </summary>
    [Comment("监测计划ID")]
    [Required]
    public int ExamPlanId { get; set; }
    /// <summary>
    /// 学段
    /// </summary>
    [Comment("学段")]
    [Required, Column(TypeName = "smallint")]
    public EducationStage EducationStage { get; set; }
    /// <summary>
    /// 监测抽样类型
    /// </summary>
    [Comment("监测抽样类型")]
    [Required, Column(TypeName = "smallint")]
    public ExamSampleType ExamSampleType { get; set; }
    /// <summary>
    /// 机构ID
    /// </summary>
    [Comment("机构ID")]
    [Required]
    public short SysOrgId { get; set; }
    /// <summary>
    /// 校区ID
    /// </summary>
    [Comment("校区ID")]
    public short? SysOrgBranchId { get; set; }
    /// <summary>
    /// 年级ID
    /// </summary>
    [Comment("年级ID")]
    [Required]
    public short GradeId { get; set; }
    /// <summary>
    /// 学期ID
    /// </summary>
    [Comment("学期ID")]
    [Required]
    public short SemesterId { get; set; }
    /// <summary>
    /// 班级ID
    /// </summary>
    [Comment("班级ID")]
    [Required]
    public long SchoolClassId { get; set; }
    /// <summary>
    /// 班号
    /// </summary>
    [Comment("班号")]
    [Required]
    public short ClassNumber { get; set; }
    /// <summary>
    /// 监测学生ID
    /// </summary>
    [Comment("监测学生ID")]
    [Required]
    public long ExamStudentId { get; set; }
    /// <summary>
    /// 选科组合ID
    /// </summary>
    [Comment("选科组合ID")]
    public short? NceeCourseCombId { get; set; }
    /// <summary>
    /// 监测号
    /// </summary>
    [Comment("监测号")]
    [StringLength(20)]
    public string ExamNumber { get; set; }
    /// <summary>
    /// 科目数量
    /// </summary>
    [Comment("科目数量")]
    [Required]
    public short CourseCount { get; set; }
    /// <summary>
    /// 成绩
    /// </summary>
    [Comment("成绩")]
    [Required, Column(TypeName = "decimal(10, 2)")]
    public decimal Score { get; set; } = 0;
    /// <summary>
    /// 是否排除
    /// </summary>
    [Comment("是否排除")]
    [Required]
    public bool IsExcluded { get; set; } = false;
    /// <summary>
    /// 是否特殊学生
    /// </summary>
    [Comment("是否特殊学生")]
    [Required]
    public bool IsSpecial { get; set; } = false;
    /// <summary>
    /// 分数分段ID
    /// </summary>
    [Comment("分数分段ID")]
    [Required]
    public int ExamScoreRangeId { get; set; } = 0;
    /// <summary>
    /// 备注
    /// </summary>
    [Comment("备注")]
    [StringLength(100)]
    public string Remark { get; set; }
}
