PrivateFunctions/Add-Entity.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Function Add-Entity
{
  [OutputType([Bool])]
  [CmdletBinding()]
  Param(
    [Parameter(Mandatory=$True)]
    [ValidateNotNull()]
    [String] $Name,

    [Parameter(Mandatory=$True)]
    [ValidateNotNullOrEmpty()]
    [String] $PluralName,

    [Parameter(Mandatory=$True)]
    [String] $Description
  )
  
  Validate-Context

  Write-Verbose "Toevoegen van entiteit met naam '$($Name)'..."
  Try
  {
    $EntityObject = @{
      Entity = @{
        Name = $Name;
        PluralName = $PluralName; 
        Description = $Description
      }
    }

    $EntityData = [System.Text.Encoding]::UTF8.GetBytes(($EntityObject | ConvertTo-Json))

    $Response = Invoke-WebRequest -UseBasicParsing -Uri "$($DqContext.GetEntityControllerUrl())" -Method Post -Header $DqContext.Headers -Body $EntityData
    Return $True
  }
  Catch [System.Net.WebException]
  {
    $Stream = $_.Exception.Response.GetResponseStream()
    $StreamReader = New-Object System.IO.StreamReader($Stream)
    $StreamReader.BaseStream.Position = 0
    $ResponseBody = $StreamReader.ReadToEnd()
    $ResponseBody = $ResponseBody | ConvertFrom-Json -ErrorAction SilentlyContinue
    $StreamReader.Close()

    $ErrorMessage = "Fout bij toevoegen van entiteit met naam '$($Name)': '$($_.Exception.Message)'."
    If ($ResponseBody -and $ResponseBody.Message)
    {
      $ErrorMessage = $ErrorMessage + [char]10 + [char]13 + " + DetailedMessage: $($ResponseBody.Message)"
    }

    Write-Error $ErrorMessage
    Return $False
  }
}