namespace Backend.Domain;

public sealed class Nomination
{
    public int Id { get; set; }
    public int SeasonId { get; set; }
    public Season Season { get; set; } = null!;
    public int? CategoryId { get; set; }
    public Category? Category { get; set; }
    public string CategoryGroupName { get; set; } = string.Empty;
    public string SubmittedByTwitchId { get; set; } = string.Empty;
    public int? CandidateId { get; set; }
    public Candidate? Candidate { get; set; }
    public int? StreamerIdentityId { get; set; }
    public StreamerIdentity? StreamerIdentity { get; set; }
    public int? SuggestedCategoryId { get; set; }
    public Category? SuggestedCategory { get; set; }
    public string? CandidateText { get; set; }
    public string? StreamUrl { get; set; }
    public string? ResolvedChannel { get; set; }
    public string? ResolvedPlatform { get; set; }
    public int? AvgViewers { get; set; }
    public int? HoursStreamed { get; set; }
    public int? HoursWatched { get; set; }
    public int? PeakViewers { get; set; }
    public int? FollowersGained { get; set; }
    public string TrackerStatus { get; set; } = "pending";
    public DateTimeOffset? TrackerCheckedAt { get; set; }
    public string TrackingReviewStatus { get; set; } = "clear";
    public string TrackingFlagsJson { get; set; } = "[]";
    public string? TrackingReviewNote { get; set; }
    public string? TrackingReviewedByTwitchId { get; set; }
    public DateTimeOffset? TrackingReviewedAt { get; set; }
    public string Status { get; set; } = "pending";
    public string? ReviewNote { get; set; }
    public string? ReviewedByTwitchId { get; set; }
    public DateTimeOffset CreatedAt { get; set; }
    public DateTimeOffset? ReviewedAt { get; set; }
}
