Functions/Get-DqEntitiesFormatted.ps1

Function Get-DqEntitiesFormatted
{
  <#
    .SYNOPSIS
      Deze functie haalt alle entiteiten op uit een DQ Monitor Webservice en presenteert deze op een leesbare manier.
   
    .DESCRIPTION
      De Get-DqEntitiesFormatted functie haalt een lijst op van entiteiten die bekend zijn bij de DQ Monitor Webservice.
      Het resultaat wordt in een geformatteerde tabel gepresenteerd.
      Voordat deze functie gebruikt wordt, zorg ervoor dat de Context is gezet via functie Set-DqContext.
   
    .PARAMETER CustomOnly
      Optioneel: Indicatie dat alleen een lijst met eigen gemaakte entiteiten van de klant opgehaald moeten worden.
 
    .PARAMETER Entities
      Optioneel: Indien entiteiten via deze parameter worden meegegeven (afkomstig uit Get-DqEntities) dan worden deze
      geformatteerd weergegeven.
       
    .INPUTS
      Geen.
   
    .OUTPUTS
      Geen.
   
    .EXAMPLE
      PS> Get-DqEntitiesFormatted
   
      Naam Meervoudsnaam Omschrijving
      -------- ------------- ----------------------------------------
      Eenheid Eenheden Een verzameling eenheden.
      Relatie Relaties Een relatie is een natuurlijk persoon, rechtspersoon of groep van personen die in het verleden, heden of in de toekomst een betrekking heeft of iets van doen heeft met de corporatie.
      Contract Contracten Een verzameling van contracten gebaseerd op natuurlijke en onnatuurlijke personen.
      Test Testen Een testentiteit.
   
   
    .EXAMPLE
      PS> Get-DqEntitiesFormatted -CustomOnly
   
      Naam Meervoudsnaam Omschrijving
      -------- ------------- ----------------------------------------
      Contract Contracten Een verzameling van contracten gebaseerd op natuurlijke en onnatuurlijke personen.
      Test Testen Een testentiteit.
 
    .LINK
      Set-DqContext
  #>


  [CmdletBinding(DefaultParameterSetName="Automatic")]
  Param(
    [Parameter(Mandatory=$False, position=1, ParameterSetName="Automatic")]
    [Switch] $CustomOnly,

    [Parameter(Mandatory=$False, position=2, ParameterSetName="ByEntities")]
    [ValidateNotNull()]
    [Array] $Entities
  )

  If ($PSCmdlet.ParameterSetName -eq "Automatic")
  {
    If ($CustomOnly.IsPresent -and $CustomOnly)
    { 
      [Array]$Entities = Get-DqEntities -CustomOnly
    }
    Else 
    {
      [Array]$Entities = Get-DqEntities
    }
  }

  If ($Entities.Count -eq 0)
  {
    Write-Warning "Geen entiteiten gevonden."
    Return;
  }
  
  $LengthMaxLength = ($Entities | Select -ExpandProperty Name | Measure-Object -Maximum -Property Length).Maximum
  $PluralMaxLength = ($Entities | Select -ExpandProperty PluralName | Measure-Object -Maximum -Property Length).Maximum

  Write-Host " "
  Write-Host "Naam".PadRight($LengthMaxLength) "Meervoudsnaam".PadRight($PluralMaxLength) "Omschrijving"
  Write-Host "-".PadRight($LengthMaxLength, "-") "-".PadRight($PluralMaxLength, "-") "-".PadRight(40, "-")

  ForEach($Entity in $Entities)
  {
    $Description = $Entity.Description.Replace([Char]10, ' ').Replace([Char]13, ' ')
    If ($Description.Length -gt 140)
    {
      $Description = $Description.Substring(0, 140);
    }

    Write-Host ([String]::Format("{0} {1} {2}", $Entity.Name.PadRight($LengthMaxLength), $Entity.PluralNAme.PadRight($PluralMaxLength), $Entity.Description));
  }
}