using Jiaowu.Api.Domain.Common; namespace Jiaowu.Api.Domain.Academic; public sealed class Teacher : EntityBase { public required string TeacherNumber { get; set; } public required string Name { get; set; } public Gender Gender { get; set; } public Guid CollegeId { get; set; } public College? College { get; set; } public string? Title { get; set; } public TeacherStatus Status { get; set; } = TeacherStatus.Active; public DateOnly? HireDate { get; set; } public bool IsExternal { get; set; } public string? Phone { get; set; } public string? Email { get; set; } public string? Notes { get; set; } public Guid? UserId { get; set; } } public sealed class Student : EntityBase { public required string StudentNumber { get; set; } public required string Name { get; set; } public Gender Gender { get; set; } public Guid AdministrativeClassId { get; set; } public AdministrativeClass? AdministrativeClass { get; set; } public int EnrollmentYear { get; set; } public DateOnly EnrollmentDate { get; set; } public StudentStatus Status { get; set; } = StudentStatus.Active; public DateOnly? DateOfBirth { get; set; } public string? EnglishName { get; set; } public string? IdCardNumber { get; set; } public string? Nationality { get; set; } public string? Ethnicity { get; set; } public string? PoliticalStatus { get; set; } public string? NativePlace { get; set; } public string? HouseholdAddress { get; set; } public string? CurrentAddress { get; set; } public string? PostalCode { get; set; } public string? Phone { get; set; } public string? Email { get; set; } public string? Qq { get; set; } public string? WeChat { get; set; } public string? EmergencyContactName { get; set; } public string? EmergencyContactRelationship { get; set; } public string? EmergencyContactPhone { get; set; } public string? SpecialTags { get; set; } public string? SpecialNeeds { get; set; } public string? Biography { get; set; } public string? Notes { get; set; } public Guid? UserId { get; set; } } public sealed class Course : CatalogEntity { public Guid CollegeId { get; set; } public College? College { get; set; } public Guid? CourseCategoryId { get; set; } public CourseCategory? CourseCategory { get; set; } public string? EnglishName { get; set; } public decimal Credits { get; set; } public int TotalHours { get; set; } public int LectureHours { get; set; } public int PracticeHours { get; set; } public CourseNature Nature { get; set; } public AssessmentMethod AssessmentMethod { get; set; } public string? Description { get; set; } public ICollection Prerequisites { get; set; } = []; public ICollection RequiredByCourses { get; set; } = []; } public sealed class CoursePrerequisite : EntityBase { public Guid CourseId { get; set; } public Course? Course { get; set; } public Guid PrerequisiteCourseId { get; set; } public Course? PrerequisiteCourse { get; set; } } public sealed class CourseCategory : CatalogEntity { } public enum Gender { Unknown = 0, Male = 1, Female = 2 } public enum TeacherStatus { Active = 1, OnLeave = 2, Retired = 3, Departed = 4 } public enum StudentStatus { Active = 1, Suspended = 2, Graduated = 3, Withdrawn = 4 } public enum CourseNature { GeneralRequired = 1, MajorRequired = 2, MajorElective = 3, GeneralElective = 4, Practice = 5 } public enum AssessmentMethod { Examination = 1, Assessment = 2 }