Functions/Public/Join-WHDQualifier.ps1

<#
    .SYNOPSIS
    Join multiple WHD API qualifiers together with a logical operator.
 
    .DESCRIPTION
    This function joins multiple WHD API qualifiers together using a specified logical operator.
 
    .PARAMETER Qualifiers
    An array of qualifiers to join together. These should be generated by the New-WHDQualifier function.
 
    .PARAMETER JoinOperator
    The logical operator to use when joining the qualifiers.
    Options are AND and OR.
 
    .EXAMPLE
    $Qualifier1 = New-WHDQualifier -Attribute "email" -Operator "Equals" -Value "user@example.com"
    $Qualifier2 = New-WHDQualifier -Attribute "department" -Operator "Equals" -Value "IT"
    $JoinedQualifier = Join-WHDQualifier -Qualifiers @($Qualifier1, $Qualifier2) -JoinOperator "AND"
#>

function Join-WHDQualifier {
    [CmdletBinding()]
    [OutputType([object])]
    param (
        [Parameter(Mandatory, Position = 0)]
        [WHDQualifier[]] $Qualifiers,

        [Parameter(Mandatory, Position = 1)]
        [WHDQualifierLogicalOperator] $JoinOperator
    )

    # If we only receive one qualifier, just return it as-is
    # This keeps the sub-classes free from overlap
    if ($Qualifiers.Count -eq 1) { return $Qualifiers[0] }

    $Qualifier = [WHDGroupQualifier]::new($Qualifiers, $JoinOperator)

    return $Qualifier
}