Functions/Get-DqChecks.ps1

Function Get-DqChecks
{
  <#
    .SYNOPSIS
      Deze functie haalt alle controles op uit een DQ Monitor Webservice.
   
    .DESCRIPTION
      De Get-DqChecks functie haalt een lijst op van controles die bekend zijn bij de DQ Monitor Webservice.
      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 IncludeStatement
      Optioneel: Indicatie dat ook het T-SQL statement opgehaald moet worden. Deze flag werkt alleen in combinatie met 'CustomOnly'.
       
    .INPUTS
      Geen.
   
    .OUTPUTS
      Array met JSON objecten die controles representeren.
     
    .EXAMPLE
      PS> Get-DqChecks
      {}
   
    .EXAMPLE
      PS> Get-DqChecks -CustomOnly
      {}
 
    .LINK
      Set-DqContext
  #>

  
  [OutputType([Array])]
  [CmdletBinding()]
  Param(
    [Parameter(Mandatory=$False)]
    [Switch] $CustomOnly,

    [Parameter(Mandatory=$False)]
    [Switch] $IncludeStatement
  )

  Validate-Context

  If ($CustomOnly.IsPresent -and $CustomOnly)
  {
    Write-Verbose "Ophalen aanwezige klantencontroles van DQ Monitor API..."
  }
  Else 
  {
    Write-Verbose "Ophalen alle controles van DQ Monitor API..."
  }

  $Response = Invoke-WebRequest -UseBasicParsing -Uri $DqContext.GetCheckControllerUrl() -Method Get -Header $DqContext.Headers -ErrorAction Stop
  $Checks = $Response.Content | ConvertFrom-Json | Select -ExpandProperty Checks

  If ($CustomOnly.IsPresent -and $CustomOnly)
  {
    $CustomChecks = @($Checks | Where-Object { $_.IsCustom -eq $True })
    Write-Verbose "Totaal $($Checks.Count) controle(s) gevonden waarvan $($CustomChecks.Count) klantencontrole(s)."
    $Checks = $CustomChecks

    If ($IncludeStatement.IsPresent -and $IncludeStatement)
    {
      Write-Verbose "T-SQL statements worden ook opgehaald voor de lijst van klantencontroles..."
      ForEach($Check in $Checks)
      {
        $Response = Invoke-WebRequest -UseBasicParsing -Uri "$($DqContext.GetCheckControllerUrl())/$($Check.Id)" -Method Get -Header $DqContext.Headers -ErrorAction Stop
        $CheckDetailed = $Response.Content | ConvertFrom-Json | Select -ExpandProperty Check
        $Check.Statement = $CheckDetailed.Statement
      }
    }
  }
  Else 
  {
    Write-Verbose "$($Checks.Count) controle(s) gevonden."
  }

  Return [Array] ($Checks | Sort-Object { $_.Name })
}