using Jiaowu.Api.Domain.Common;

namespace Jiaowu.Api.Domain.Academic;

public sealed class OtherExamBatch : EntityBase
{
    public string? ExamCode { get; set; }
    public required string Name { get; set; }
    public string? Organizer { get; set; }
    public DateOnly ExamDate { get; set; }
    public OtherExamMetricKind MetricKind { get; set; }
    public decimal? MaxScore { get; set; }
    public string? LevelOptions { get; set; }
    public OtherExamBatchStatus Status { get; set; } = OtherExamBatchStatus.Draft;
    public int PublicationCount { get; set; }
    public DateTime? PublishedAt { get; set; }
    public ICollection<OtherExamResult> Results { get; set; } = [];
}

public sealed class OtherExamResult : EntityBase
{
    public Guid OtherExamBatchId { get; set; }
    public OtherExamBatch? OtherExamBatch { get; set; }
    public Guid StudentId { get; set; }
    public Student? Student { get; set; }
    public int AttemptNumber { get; set; } = 1;
    public decimal? Score { get; set; }
    public string? Level { get; set; }
    public bool? IsPassed { get; set; }
    public string? Notes { get; set; }
}

public enum OtherExamMetricKind
{
    PassFail = 1,
    Level = 2,
    Score = 3
}

public enum OtherExamBatchStatus
{
    Draft = 1,
    Published = 2
}
