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

namespace YBEE.EQM.Core;

/// <summary>
/// 高中分析学生信息
/// </summary>
public class NceeStudent : IEntity
{
    /// <summary>
    /// 主键
    /// </summary>
    [Comment("主键")]
    [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public long Id { get; set; }
    /// <summary>
    /// 高中分析计划ID
    /// </summary>
    [Comment("高中分析计划ID")]
    [Required]
    public int NceePlanId { get; set; }
    /// <summary>
    /// 机构ID
    /// </summary>
    [Comment("机构ID")]
    [Required]
    public short SysOrgId { get; set; }
    /// <summary>
    /// 年级ID
    /// </summary>
    [Comment("年级ID")]
    [Required]
    public short GradeId { get; set; }
    /// <summary>
    /// 班号
    /// </summary>
    [Comment("班号")]
    [Required]
    public short ClassNumber { get; set; }

    /// <summary>
    /// 姓名
    /// </summary>
    [Comment("姓名")]
    public string Name { get; set; }
    /// <summary>
    /// 考号
    /// </summary>
    [Comment("考号")]
    [Required]
    public string ExamNumber { get; set; }

    /// <summary>
    /// 首选科目ID
    /// </summary>
    [Comment("首选科目ID")]
    public short? DirectionCourseId { get; set; }
    /// <summary>
    /// 选科组合ID
    /// </summary>
    [Comment("选科组合ID")]
    public short? NceeCourseCombId { get; set; }

    /// <summary>
    /// 原始总分
    /// </summary>
    [Comment("原始总分")]
    [Required, Column(TypeName = "decimal(10, 2)")]
    public decimal Score { get; set; } = 0;
    /// <summary>
    /// 赋分总分
    /// </summary>
    [Comment("赋分总分")]
    [Required, Column(TypeName = "decimal(10, 2)")]
    public decimal ScoreX { get; set; } = 0;

    /// <summary>
    /// 整体原始分排名
    /// </summary>
    [Comment("整体原始分排名")]
    public int OrderInTotal { get; set; } = 0;
    /// <summary>
    /// 整体转换分排名
    /// </summary>
    [Comment("整体转换分排名")]
    public int OrderInTotalX { get; set; } = 0;
    /// <summary>
    /// 机构原始分排名
    /// </summary>
    [Comment("机构原始分排名")]
    public int OrderInOrg { get; set; } = 0;
    /// <summary>
    /// 机构转换分排名
    /// </summary>
    [Comment("机构转换分排名")]
    public int OrderInOrgX { get; set; } = 0;

    /// <summary>
    /// 一对一引用（机构）
    /// </summary>
    public virtual SysOrg SysOrg { get; set; }
}
