using Jiaowu.Api.Domain.Common;

namespace Jiaowu.Api.Domain.Academic;

public sealed class StudentStatusChange : EntityBase
{
    public Guid StudentId { get; set; }
    public Student? Student { get; set; }
    public StudentStatusChangeType Type { get; set; }
    public StudentStatus OriginalStatus { get; set; }
    public StudentStatus TargetStatus { get; set; }
    public required string Reason { get; set; }
    public StudentStatusChangeState State { get; set; } =
        StudentStatusChangeState.Submitted;
    public string? ReviewComment { get; set; }
    public DateTime SubmittedAt { get; set; } = DateTime.UtcNow;
    public DateTime? ReviewedAt { get; set; }
    public DateTime? ApprovedAt { get; set; }
}

public enum StudentStatusChangeType
{
    Suspension = 1,
    Resumption = 2,
    Withdrawal = 3
}

public enum StudentStatusChangeState
{
    Submitted = 1,
    CounselorApproved = 2,
    CollegeApproved = 3,
    Approved = 4,
    Rejected = 5,
    Cancelled = 6
}
