Public/Requests/Deny-ABRRequest.ps1

<#
    .SYNOPSIS
      Deny a specific request
 
    .DESCRIPTION
      Deny a specific request by providing the request Id
 
    .PARAMETER Id
      The Id for the request that you want to deny
 
    .PARAMETER Reason
      The reason why the request was denied
 
    .PARAMETER DeniedBy
      Add the denier information to the audit logging. This has to be an email address that matches a portal user, otherwise it will be ignored
 
    .EXAMPLE
      PS C:\> Deny-ABRRequest -Id 1234567
      Deny request with Id 1234567
 
    .EXAMPLE
      PS C:\> Deny-ABRRequest -Id 1234567 -Reason 'This isn''t allowed by our company policy' -DeniedBy 'John.Doe@company.tld'
      Deny request with Id 1234567 and add a reason why you denied it and who denied it
 
    .EXAMPLE
      PS C:\> Get-ABRRequest -Id 1234567 | Deny-ABRRequest -Reason 'This isn''t allowed by our company policy' -DeniedBy 'John.Doe@company.tld'
      Deny a request by using pipeline support
#>

Function Deny-ABRRequest
{
  [CmdletBinding(DefaultParameterSetName = 'Id')]
  Param
  (
    [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]
    [ValidateNotNullOrEmpty()]
    [int]
    $Id,

    [Parameter(Position = 1)]
    [ValidateNotNullOrEmpty()]
    [string]
    $Reason = $null,

    [Parameter(Position = 2)]
    [ValidateNotNullOrEmpty()]
    [string]
    $DeniedBy = $Script:ABR_API_User
  )

  Process
  {
    $URL = '/requests'
    $Headers = @{}

    If ($Id -gt 0)
    {
      $URL += '/{0}' -f $Id
    }

    If (-not [string]::IsNullOrEmpty($DeniedBy))
    {
      $Headers.Add('deniedby', $DeniedBy)
    }

    If ($PSBoundParameters.ContainsKey('Reason'))
    {
      $Headers.Add('reason', $Reason)
    }

    $InvokeABRRequest_Splat = @{
      Method = 'Delete'
      URI    = $URL
    }

    If ($Headers.Count -gt 0)
    {
      $InvokeABRRequest_Splat.Add('Headers', $Headers)
    }

    Invoke-ABRRequest @InvokeABRRequest_Splat
  }
}