Functions/Import-DqChecks.ps1

Function Import-DqChecks
{
  <#
    .SYNOPSIS
      Deze functie importeert een of meerdere controles naar de DQ Monitor Webservice.
   
    .DESCRIPTION
      De Import-DqChecks functie leest een checks definitiebestand uit en zal de controles die daarin gedefinieerd staan importeren naar de DQ Monitor Webservice.
      Voordat deze functie gebruikt wordt, zorg ervoor dat de Context is gezet via functie Set-DqContext.
   
    .PARAMETER CheckJsonFile
      Het volledige pad naar een .JSON bestand dat voorzien is van een verzameling controles die geupload moeten worden naar de DQ Monitor Webservice.
      Houdt er rekening mee dat SQL script bestanden die benoemd worden in het JSON bestand (eigenschap 'statement') in dezelfde map worden geplaatst als het JSON bestand.
   
    .INPUTS
      Geen.
   
    .OUTPUTS
      Geen.
   
    .EXAMPLE
      PS> Import-DqChecks -CheckJsonFile "C:\DQ\controles.json"
      Controle 'WOONGELUK_REL_GEG_AANW1' is opgevoerd.
      Controle 'WOONGELUK_REL_GEG_AANW2' is opgevoerd.
      Controle 'WOONGELUK_REL_GEG_AANW3' is opgevoerd.
      3 controle(s) opgevoerd.
 
    .LINK
      Set-DqContext
  #>

  
  [CmdletBinding()]
  Param(
    [Parameter(Mandatory=$True)]
    [ValidateNotNull()]
    [String] $CheckJsonFile
  )

  Validate-Context

  Write-Verbose "Checks bestand '$($CheckJsonFile)' wordt gebruikt."

  $ValidationResult = Validate-CheckJsonFile -CheckJsonFile $CheckJsonFile -ErrorAction Stop
  If ($ValidationResult -ne $True)
  {
    Return;
  }

  $CheckJsonRaw = Get-Content $CheckJsonFile -Raw -Encoding UTF8 -ErrorAction Ignore
  $CheckStatementRootPath = Split-Path -Path $CheckJsonFile -Parent
  
  $ChecksToUpload = Get-ApiChecksToUpload -CheckJsonRaw $CheckJsonRaw -CheckStatementRootPath $CheckStatementRootPath
  If ($ChecksToUpload.Count -eq 0)
  {
    Write-Warning "Geen controles gevonden om te uploaden."
    Return;
  }

  Upload-ChecksToApi -ChecksToUpload $ChecksToUpload -CheckStatementRootPath $CheckStatementRootPath
}