Private/Resolve-BridgeStateForChange.ps1

function Resolve-BridgeStateForChange {
    <#
    .SYNOPSIS
    Επιλύει το αντικείμενο κατάστασης γέφυρας που αντιστοιχεί σε μια ανιχνευθείσα αλλαγή.

    .DESCRIPTION
    Η Resolve-BridgeStateForChange αναζητά την πλήρη εγγραφή κατάστασης γέφυρας
    για μια δεδομένη αλλαγή, αντιστοιχίζοντας το GefyraName στα arrays
    CurrentState ή PreviousState, ανάλογα με την κατεύθυνση του SideIndicator.

    .PARAMETER Change
    Το αντικείμενο αλλαγής που περιέχει GefyraName και SideIndicator.

    .PARAMETER PreviousState
    Η προηγούμενη συλλογή κατάστασης γεφυρών.

    .PARAMETER CurrentState
    Η τρέχουσα συλλογή κατάστασης γεφυρών.

    .OUTPUTS
    [object[]] - Array of matching bridge state objects.

    .EXAMPLE
    $state = Resolve-BridgeStateForChange -Change $change -PreviousState $prev -CurrentState $curr

    .NOTES
    Για αλλαγές '=>', αναζητά μόνο στο CurrentState. Για αλλαγές '<=', αναζητά
    πρώτα στο CurrentState και εναλλακτικά στο PreviousState.
    #>

    [CmdletBinding()]
    [OutputType([object[]])]
    param(
        [Parameter(Mandatory)]$Change,
        [Parameter()]
        [AllowNull()]
        [AllowEmptyCollection()]
        [object]$PreviousState = @(),
        [Parameter(Mandatory)][object]$CurrentState
    )

    $currentMatches = @([array]$CurrentState | Where-Object { $null -ne $_ -and $_.GefyraName -eq $Change.GefyraName })
    if ($currentMatches.Count -gt 0 -or $Change.SideIndicator -ne '<=') {
        return , $currentMatches
    }

    $previousMatches = @([array]$PreviousState | Where-Object { $null -ne $_ -and $_.GefyraName -eq $Change.GefyraName })
    return , $previousMatches
}