using Jiaowu.Api.Domain.Common;
using Jiaowu.Api.Domain.Identity;

namespace Jiaowu.Api.Domain.Academic;

public sealed class ClassroomReservation : EntityBase
{
    public Guid ApplicantUserId { get; set; }
    public ApplicationUser? ApplicantUser { get; set; }
    public required string ApplicantName { get; set; }
    public Guid ApplicantCollegeId { get; set; }
    public College? ApplicantCollege { get; set; }
    public Guid AcademicTermId { get; set; }
    public AcademicTerm? AcademicTerm { get; set; }
    public Guid ClassroomId { get; set; }
    public Classroom? Classroom { get; set; }
    public DateOnly ReservationDate { get; set; }
    public int StartPeriod { get; set; }
    public int PeriodCount { get; set; }
    public int AttendeeCount { get; set; }
    public required string Purpose { get; set; }
    public required string ContactPhone { get; set; }
    public string? Notes { get; set; }
    public ClassroomReservationStatus Status { get; set; } =
        ClassroomReservationStatus.Submitted;
    public Guid? ReviewedByUserId { get; set; }
    public ApplicationUser? ReviewedByUser { get; set; }
    public DateTime? ReviewedAt { get; set; }
    public string? ReviewComment { get; set; }
    public DateTime? CancelledAt { get; set; }
}

public enum ClassroomReservationStatus
{
    Submitted = 1,
    Approved = 2,
    Rejected = 3,
    Cancelled = 4
}
