Files
Academic-Affairs-System/src/Jiaowu.Api/Domain/Academic/PeopleAndCourseEntities.cs
T
2026-08-04 10:48:08 +08:00

123 lines
3.6 KiB
C#

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<CoursePrerequisite> Prerequisites { get; set; } = [];
public ICollection<CoursePrerequisite> 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
}