namespace Baya.Domain.Entities.Verification;

/// <summary>
/// The six stable machine codes of the seeded pipeline steps. The pipeline is data-driven — these live as
/// rows in <c>verification_step_types</c>, not as a switch the automated-run endpoints branch on. A new
/// regulatory step (e.g. professional-liability insurance) is one INSERT, never a new constant here.
/// </summary>
public static class VerificationStepTypeCodes
{
    public const string IdentityKyc = "identity_kyc";
    public const string ShahkarMatch = "shahkar_match";
    public const string MohCompetencyLicense = "moh_competency_license";
    public const string InoMembership = "ino_membership";
    public const string CriminalRecord = "criminal_record";
    public const string BankAccountVerification = "bank_account_verification";

    /// <summary>Steps that, on admin pass, record a row in <c>nurse_credentials</c>.</summary>
    public static readonly IReadOnlyList<string> CredentialBearing =
        [MohCompetencyLicense, InoMembership, CriminalRecord];

    /// <summary>The time-limited step whose certificate expires (drives the expiry scanner re-gate).</summary>
    public const string TimeLimited = CriminalRecord;
}

/// <summary>Stable codes for <c>nurse_credentials.credential_type</c> (aligned with the step codes).</summary>
public static class CredentialTypes
{
    public const string MohCompetencyLicense = VerificationStepTypeCodes.MohCompetencyLicense;
    public const string InoMembership = VerificationStepTypeCodes.InoMembership;
    public const string CriminalRecord = VerificationStepTypeCodes.CriminalRecord;
}

/// <summary>Stable codes for <c>nurse_credentials.verification_method</c>.</summary>
public static class VerificationMethods
{
    public const string Manual = "manual";
    public const string Portal = "portal";
    public const string Api = "api";
}

/// <summary>Stable codes for <c>verification_step_types.automation_provider</c> (informational; the mock
/// swap is config-selected, never branched on here).</summary>
public static class AutomationProviders
{
    public const string IdentityKycVendor = "identity_kyc_vendor";
    public const string Shahkar = "shahkar";
    public const string Sheba = "sheba";
}
