using Furion.DatabaseAccessor;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace YBEE.EQM.Core;
///
/// 监测特殊学生上报信息
///
[Comment("监测特殊学生上报信息")]
public class ExamSpecialStudent : DEntityBase, IEntityTypeBuilder
{
///
/// 监测计划ID
///
[Comment("监测计划ID")]
[Required]
public int ExamPlanId { get; set; }
///
/// 机构ID
///
[Comment("机构ID")]
[Required]
public short SysOrgId { get; set; }
///
/// 校区ID
///
[Comment("校区ID")]
public short? SysOrgBranchId { get; set; }
///
/// 监测年级ID
///
[Comment("监测年级ID")]
[Required]
public int ExamGradeId { get; set; }
///
/// 年级ID
///
[Comment("年级ID")]
[Required]
public short GradeId { get; set; }
///
/// 班级ID
///
[Comment("班级ID")]
[Required]
public long SchoolClassId { get; set; }
///
/// 班号
///
[Comment("班号")]
[Required]
public short ClassNumber { get; set; }
///
/// 学籍号
///
[Comment("学籍号")]
[StringLength(100)]
public string StudentNumber { get; set; } = "";
///
/// 姓名
///
[Comment("姓名")]
[Required, StringLength(100)]
public string Name { get; set; }
///
/// 证件类型
///
[Comment("证件类型")]
[Required, Column(TypeName = "smallint")]
public CertificateType CertificateType { get; set; } = CertificateType.NONE;
///
/// 证件号码
///
[Comment("证件号码")]
[StringLength(50)]
public string IdNumber { get; set; } = "";
///
/// 出生日期
///
[Comment("出生日期")]
public DateTime? BirthDate { get; set; }
///
/// 性别
///
[Comment("性别")]
[Required, Column(TypeName = "smallint")]
public Gender Gender { get; set; } = Gender.UNKNOWN;
///
/// 申请原因
///
[Comment("申请原因")]
[Required, StringLength(2000)]
public string ApplyReason { get; set; }
///
/// 家长姓名
///
[Comment("家长姓名")]
[StringLength(100)]
public string PatriarchName { get; set; }
///
/// 家长电话
///
[Comment("家长电话")]
[StringLength(50)]
public string PatriarchTel { get; set; }
///
/// 备注
///
[Comment("备注")]
[StringLength(200)]
public string Remark { get; set; }
///
/// 往期是否已认定
///
[Comment("往期是否已认定")]
[Required]
public bool IsPreIdentified { get; set; } = false;
///
/// 状态
///
[Comment("状态")]
[Required, Column(TypeName = "smallint")]
public AuditStatus Status { get; set; } = AuditStatus.AUDIT;
///
/// 佐证材料
/// [{ fileId: '123', fileName: '医院证明文件.png', fileExtName: '.png', thumbFileId: '234' }]
///
[Comment("佐证材料")]
[Column(TypeName = "json")]
public string Attachments { get; set; } = "[]";
///
/// 审核记录
/// [{ id: 1, createTime: '2023-12-25 12:56:23', sysUserId: 5, sysUserName: '张三', sysOrgId: 5, sysOrgName: '基教科', status: 3, remark: '', actionType: 3}]
///
[Comment("审核记录")]
[Required, Column(TypeName = "json")]
public string Audits { get; set; } = "[]";
///
/// 上一期总分科目数量
///
[Comment("上一期总分科目数量")]
public short? PreTotalCourse { get; set; }
///
/// 上一期总分
///
[Comment("上一期总分")]
[Column(TypeName = "decimal(10, 2)")]
public decimal? PreTotalScore { get; set; }
///
/// 一对一引用(机构)
///
public virtual SysOrg SysOrg { get; set; }
///
/// 一对一引用(年级)
///
public virtual Grade Grade { get; set; }
///
/// 一对一引用(班级)
///
public virtual SchoolClass SchoolClass { get; set; }
///
/// 一对一引用(校区)
///
public virtual SysOrg SysOrgBranch { get; set; }
///
/// 一对一引用(监测年级)
///
public virtual ExamGrade ExamGrade { get; set; }
public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
{
entityBuilder.HasIndex(a => new { a.ExamPlanId, a.SysOrgId }).HasDatabaseName("idx_exam_special_student_exam_plan_id_sys_org_id");
entityBuilder.HasIndex(a => new { a.ExamPlanId, a.SysOrgId, a.SchoolClassId }).HasDatabaseName("idx_exam_special_student_exam_plan_id_soid_scid");
}
}