50 lines
1.6 KiB
C#
50 lines
1.6 KiB
C#
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<ExamSession> 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<ExamSessionInvigilator> 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
|
|
}
|