#nullable enable
using Baya.Domain.Common;

namespace Baya.Domain.Entities.Verification;

/// <summary>
/// The admin catalog of pipeline steps — data, not a code enum. Adding a regulatory requirement is one
/// row (<see cref="Code"/> is the stable machine key). <see cref="IsAutomated"/> is snapshotted onto each
/// <see cref="VerificationStep"/> at seed time, so toggling it here never rewrites the meaning of past
/// verifications. Deactivate (<see cref="IsActive"/>) rather than delete — no soft-delete here.
/// </summary>
public class VerificationStepType : BaseEntity<long>
{
    public string Code { get; set; } = string.Empty;
    public string DisplayName { get; set; } = string.Empty;
    public string? Description { get; set; }

    public bool IsRequired { get; set; }
    public bool IsAutomated { get; set; }

    /// <summary>Informational vendor tag (e.g. <c>shahkar</c>, <c>identity_kyc_vendor</c>). The real seam
    /// is config-selected; nothing branches on this string.</summary>
    public string? AutomationProvider { get; set; }

    public int SortOrder { get; set; }
    public bool IsActive { get; set; } = true;

    public ICollection<VerificationStep> Steps { get; set; } = new List<VerificationStep>();
}
