using Jiaowu.Api.Domain.Common; namespace Jiaowu.Api.Domain.Academic; public sealed class ExamPlan : EntityBase { public Guid AcademicTermId { get; set; } public AcademicTerm? AcademicTerm { get; set; } public required string Name { get; set; } public ExamPlanStatus Status { get; set; } = ExamPlanStatus.Draft; public string? Notes { get; set; } public DateTime? PublishedAt { get; set; } public ICollection Sessions { get; set; } = []; } public sealed class ExamSession : EntityBase { public Guid ExamPlanId { get; set; } public ExamPlan? ExamPlan { get; set; } public Guid TeachingTaskId { get; set; } public TeachingTask? TeachingTask { get; set; } public Guid? ClassroomId { get; set; } public Classroom? Classroom { get; set; } public DateOnly ExamDate { get; set; } public int StartPeriod { get; set; } public int PeriodCount { get; set; } = 2; public DateTime StartsAt { get; set; } public DateTime EndsAt { get; set; } public Guid? RequiredBuildingId { get; set; } public Building? RequiredBuilding { get; set; } public int RequiredInvigilatorCount { get; set; } = 2; public string? Notes { get; set; } public ICollection Invigilators { get; set; } = []; } public sealed class ExamSessionInvigilator { public Guid ExamSessionId { get; set; } public ExamSession? ExamSession { get; set; } public Guid TeacherId { get; set; } public Teacher? Teacher { get; set; } } public enum ExamPlanStatus { Draft = 1, Published = 2, Archived = 3 }