Functions/Get-DqChecksFormatted.ps1

Function Get-DqChecksFormatted
{
  <#
    .SYNOPSIS
      Deze functie haalt alle controles op uit een DQ Monitor Webservice en presenteert deze op een leesbare manier.
   
    .DESCRIPTION
      De Get-DqChecksFormatted functie haalt een lijst op van controles 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 controles van de klant opgehaald moeten worden.
 
    .PARAMETER Checks
      Optioneel: Indien checks via deze parameter worden meegegeven (afkomstig uit Get-DqChecks) dan worden deze
      geformatteerd weergegeven.
       
    .INPUTS
      Geen.
   
    .OUTPUTS
      Geen.
   
    .EXAMPLE
      PS> Get-DqChecksFormatted
   
      Naam Entiteit Gevoelige inhoud Omschrijving
      ------------------------- --------------- ---------------- -------------------------------------
      ... ... ...
      MY_CUSTOM_CHECK006 Eenheid Nee Controleert of er aanwezigheid en geldigheid controles aanwezig zijn.
      WOONGELUK_REL_GEG_GELDIG Relatie Nee Controleert per voorbeeldrelatie of de adresgegevens correct zijn ingevuld. Controle gaat alleen over relaties die nog staan ingeschreven.
      WOONGELUK_REL_GEG_GELDIG2 Relatie Ja Controleert per voorbeeldrelatie of de adresgegevens correct zijn ingevuld. Controle gaat alleen over relaties die nog staan ingeschreven.
   
   
    .EXAMPLE
      PS> Get-DqChecksFormatted -CustomOnly
   
      Naam Entiteit Gevoelige inhoud Omschrijving
      ------------------------- --------------- ---------------- -------------------------------------
      MY_CUSTOM_CHECK006 Eenheid Nee Controleert of er aanwezigheid en geldigheid controles aanwezig zijn.
      WOONGELUK_REL_GEG_GELDIG Relatie Nee Controleert per voorbeeldrelatie of de adresgegevens correct zijn ingevuld. Controle gaat alleen over relaties die nog staan ingeschreven.
      WOONGELUK_REL_GEG_GELDIG2 Relatie Ja Controleert per voorbeeldrelatie of de adresgegevens correct zijn ingevuld. Controle gaat alleen over relaties die nog staan ingeschreven.
   
    .LINK
      Set-DqContext
  #>


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

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

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

  If ($Checks.Count -eq 0)
  {
    Write-Warning "Geen controles gevonden."
    Return;
  }
  
  $LengthMaxLength = ($Checks | Select -ExpandProperty Name | Measure-Object -Maximum -Property Length).Maximum
  $EntityMaxLength = ($Checks | Select -ExpandProperty Entity | Measure-Object -Maximum -Property Length).Maximum
  $IsSensitiveMaxLength = 16

  Write-Host " "
  Write-Host "Naam".PadRight($LengthMaxLength) "Entiteit".PadRight($EntityMaxLength) "Gevoelige inhoud".PadRight($IsSensitiveMaxLength) "Omschrijving"
  Write-Host "-".PadRight($LengthMaxLength, "-") "-".PadRight($EntityMaxLength, "-") "-".PadRight($IsSensitiveMaxLength, "-") "-".PadRight(40, "-")

  ForEach($Check in $Checks)
  {
    $Description = $Check.Documentation.Description.Replace([Char]10, ' ').Replace([Char]13, ' ')
    $IsSensitive = If ($Check.ResultCaptionIsSensitive -eq $true) { "Ja" } Else { "Nee" }
    If ($Description.Length -gt 140)
    {
      $Description = $Description.Substring(0, 140);
    }

    Write-Host ([String]::Format("{0} {1} {2} {3}", $Check.Name.PadRight($LengthMaxLength), $Check.Entity.PadRight($EntityMaxLength), $IsSensitive.PadRight($IsSensitiveMaxLength), $Description));
  }
}