internal/functions/Convert-RequirementValue.ps1

function Convert-RequirementValue {
    <#
    .SYNOPSIS
    Normalizes activation requirement values for consistent comparison.
 
    .DESCRIPTION
    Converts activation requirement strings to a standardized format by:
    - Handling null/empty/none values
    - Normalizing MFA references
    - Standardizing justification references
    - Sorting and deduplicating multiple requirements
 
    .PARAMETER Value
    The activation requirement value to normalize.
 
    .OUTPUTS
    String. The normalized requirement value.
 
    .EXAMPLE
    $normalized = Convert-RequirementValue -Value "MFA, justification"
    # Returns: "Justification,MFA"
 
    .EXAMPLE
    $normalized = Convert-RequirementValue -Value "none"
    # Returns: ""
    #>

    [CmdletBinding()]
    param([Parameter()][string]$Value)

    if (-not $Value) { return '' }

    $v = $Value.Trim()
    if ($v -eq '') { return '' }

    # Handle explicit "none" values
    if ($v -match '^(none|null|no(ne)?requirements?)$') { return '' }

    # Split on comma / semicolon and process each token
    $tokens = $v -split '[,;]+' | ForEach-Object { $_.Trim() } | Where-Object { $_ }

    $normalized = foreach ($token in $tokens) {
        switch -Regex ($token) {
            '^(mfa|multifactorauthentication)$' { 'MFA'; break }
            '^(justification)$' { 'Justification'; break }
            default { $token }
        }
    }

    # Sort and deduplicate, then join
    ($normalized | Sort-Object -Unique) -join ','
}