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 ExamAbsentReplace : 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("缺测学生姓名")]
[Required, StringLength(100)]
public string AbsentName { get; set; }
///
/// 缺测学生监测号
///
[Comment("缺测学生监测号")]
[Required, StringLength(20)]
public string AbsentExamNumber { get; set; }
///
/// 缺测科目
/// [{"id": 1, "name": "语文", "shortName": "语"}]
///
[Comment("缺测科目")]
[Required, Column(TypeName = "json")]
public string AbsentCourses { get; set; } = "[]";
///
/// 缺测原因
///
[Comment("缺测原因")]
[Required, StringLength(200)]
public string AbsentReason { get; set; }
///
/// 是否有替补
///
[Comment("是否有替补")]
[Required]
public bool IsReplaced { get; set; } = false;
///
/// 替补学生姓名
///
[Comment("替补学生姓名")]
[StringLength(100)]
public string ReplaceName { get; set; }
///
/// 替补学生监测号
///
[Comment("替补学生监测号")]
[StringLength(20)]
public string ReplaceExamNumber { get; set; }
///
/// 家长姓名
///
[StringLength(100)]
public string PatriarchName { get; set; }
///
/// 家长电话
///
[StringLength(50)]
public string PatriarchTel { get; set; }
///
/// 备注
///
[Comment("备注")]
[StringLength(200)]
public string Remark { get; set; }
///
/// 状态
///
[Comment("状态")]
[Required, Column(TypeName = "smallint")]
public AuditStatus Status { get; set; } = AuditStatus.AUDIT;
///
/// 佐证材料
///
[Comment("佐证材料")]
[Column(TypeName = "json")]
public string Attachments { get; set; } = "[]";
///
/// 审核记录
///
[Comment("审核记录")]
[Required, Column(TypeName = "json")]
public string Audits { 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_absent_replace_exam_plan_id_sys_org_id");
entityBuilder.HasIndex(a => new { a.ExamPlanId, a.SysOrgId, a.SchoolClassId }).HasDatabaseName("idx_exam_absent_replacet_exam_plan_id_soid_scid");
}
}