Functions/Remove-DqEntities.ps1

Function Remove-DqEntities
{
  <#
    .SYNOPSIS
      Deze functie geeft de gebruiker, aan de hand van een lijst van entiteiten, de mogelijkheid deze te verwijderen uit een DQ Monitor Webservice.
   
    .DESCRIPTION
      De Remove-DqEntities functie haalt een lijst op met entiteiten uit een DQ Monitor Webservice die kunnen worden verwijderd en presenteert deze.
      Via een keuzemenu kan de gebruiker een of meerdere entiteiten verwijderen.
      Voordat deze functie gebruikt wordt, zorg ervoor dat de Context is gezet via functie Set-DqContext.
   
    .INPUTS
      Geen.
   
    .OUTPUTS
      Geen.
     
    .EXAMPLE
      PS> Remove-DqEntities
       
      Maak een keuze uit een van onderstaande controles (kies 'Q' om af te breken):
          # Naam Meervoursnaam Omschrijving
      ----- ------------------------- --------------- ----------------------------------------
      [ 1] contract Contracten Een lijst van contracten
      [ 2] Wooneenheid Wooneenheden Lijst van wooneenheden
   
      Keuze (1-2 of q):
 
    .LINK
      Set-DqContext
  #>


  [CmdletBinding()]
  Param()

  Write-Verbose "Verkrijgen van lijst van entiteiten die verwijderd kunnen worden..."
  
  $Deleted = 0
  While ($True) 
  {
    # We only support custom entities at this point.
    [Array]$CustomEntities = Get-DqEntities -CustomOnly
   
    If ($CustomEntities.Count -eq 0)
    {
      If ($Deleted -gt 0)
      {
        Write-Warning "Geen entiteiten meer gevonden die verwijderd kunnen worden."
      }
      Else 
      {
        Write-Warning "Geen entiteiten gevonden die verwijderd kunnen worden."
      }
      
      Return;
    }
    
    $LengthMaxLength = ($CustomEntities | Select -ExpandProperty Name | Measure-Object -Maximum -Property Length).Maximum
    $PluralNameMaxLength = ($CustomEntities | Select -ExpandProperty PluralName | Measure-Object -Maximum -Property Length).Maximum

    Write-Host ""
    Write-Host "Maak een keuze uit een van onderstaande entiteiten (kies 'Q' om af te breken):" 
    Write-Host " "
    Write-Host " #" "Naam".PadRight($LengthMaxLength) "Meervoudsnaam".PadRight($PluralNameMaxLength) "Omschrijving"
    Write-Host "-----" "-".PadRight($LengthMaxLength, "-") "-".PadRight($PluralNameMaxLength, "-") "-".PadRight(40, "-")
    For($x=1;$x -le $CustomEntities.Count; $x++)
    {
      $Entity = $CustomEntities[$x-1]
      $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} {3}", $x.ToString().PadLeft(3, " "), $Entity.Name.PadRight($LengthMaxLength), $Entity.PluralName.PadRight($PluralNameMaxLength), $Description));
    }
   
    Write-Host " "
    $Keuze = ""
    Do 
    {
      Do
      {
        $Keuze = Read-Host "Keuze (1-$($CustomEntities.Count) of q)"
      } While ($Keuze.Trim() -notmatch '^([0-9]{1,2})$|^[qQ]$')
   
      If($Keuze -match "^\d+$")
      {
        # Make sure we do not get out of bounds.
        If ([Int]$Keuze - 1 -gt ($CustomEntities.Count - 1) -or [Int]$Keuze -eq 0)
        {
          $Keuze = ""
        }
      }
    } While ([String]::IsNullOrEmpty($Keuze))
  
    Write-Host ""
    If ($Keuze.ToLowerInvariant().Equals("q"))
    {
      Write-Host "Handeling afgebroken."
      Return;
    }
   
    $Entity = $CustomEntities[$Keuze-1];
    $Result = Remove-DqEntity -EntityObject $Entity
    
    If ($Result)
    {
      $Deleted += 1;  
    }
  }
}