Private/ConvertTo-BridgeClosedDuration.ps1

function ConvertTo-BridgeClosedDuration {
    <#
    .SYNOPSIS
    Μετατρέπει TimeSpan σε ελληνική περιγραφή διάρκειας.

    .DESCRIPTION
    Η ConvertTo-BridgeClosedDuration μετατρέπει ένα αντικείμενο TimeSpan
    σε φιλική ελληνική περιγραφή (π.χ. "2 ώρες, 30 λεπτά").

    .PARAMETER Duration
    Η διάρκεια ως αντικείμενο TimeSpan προς μετατροπή σε ελληνική περιγραφή.

    .OUTPUTS
    [string] - Η διάρκεια σε ελληνική περιγραφή.

    .EXAMPLE
    # Επιστρέφει: "2 ώρες, 30 λεπτά"

    .EXAMPLE
    # Επιστρέφει: "1 ημέρα, 3 ώρες"

    .NOTES
    Χειρίζεται ημέρες, ώρες και λεπτά με σωστή πληθυντική μορφή στα ελληνικά.
    Δεν εμφανίζει μηδενικές τιμές (π.χ. αν είναι 0 ώρες, παραλείπεται).
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param (
        [Parameter(Mandatory)][timespan]$Duration
    )
    $components = [System.Collections.Generic.List[string]]::new()
    if ($Duration -lt [timespan]::Zero) {
        Write-Warning "Η διάρκεια δεν μπορεί να είναι αρνητική."
        return "άγνωστη διάρκεια"
    }
    # Αν η διάρκεια περιλαμβάνει ημέρες
    if ($Duration.Days -gt 0) {
        $components.Add("$($Duration.Days) $(if ($Duration.Days -eq 1) { 'ημέρα' } else { 'ημέρες' })")
    }
    # Αν η διάρκεια περιλαμβάνει ώρες
    if ($Duration.Hours -gt 0) {
        $components.Add("$($Duration.Hours) $(if ($Duration.Hours -eq 1) { 'ώρα' } else { 'ώρες' })")
    }
    # Αν η διάρκεια περιλαμβάνει λεπτά
    if ($Duration.Minutes -gt 0) {
        $components.Add("$($Duration.Minutes) $(if ($Duration.Minutes -eq 1) { 'λεπτό' } else { 'λεπτά' })")
    }

    if ($components.Count -eq 0) {
        return "λιγότερο από 1 λεπτό"
    }

    # Επιστρέφουμε την ένωση των συνιστωσών
    return ($components -join ', ')
}