namespace BigRegister.Domain.Registrations;

/// <summary>The three states a BIG registration can be in.</summary>
public enum StatusTag
{
  Geregistreerd,
  Geschorst,
  Doorgehaald,
}

/// <summary>
/// Status as a flat record: only <see cref="StatusTag.Geregistreerd"/> carries a
/// herregistratie deadline. The frontend mirrors this as a discriminated union.
/// </summary>
public sealed record RegistrationStatus(
    StatusTag Tag,
    DateOnly? HerregistratieDatum = null,
    DateOnly? GeschorstTot = null,
    string? Reden = null,
    DateOnly? DoorgehaaldOp = null);

public sealed record Registration(
    string BigNummer,
    string Naam,
    string Beroep,
    DateOnly Registratiedatum,
    DateOnly Geboortedatum,
    RegistrationStatus Status);
