Functions/BloxOne/BloxOneCloud/Remove-B1Location.ps1

function Remove-B1Location {
    <#
    .SYNOPSIS
        Removes a Location from the BloxOne Cloud

    .DESCRIPTION
        This function is used to remove a Location from the BloxOne Cloud

    .PARAMETER Name
        Filter the results by the name of the Location

    .PARAMETER Object
        The Location Object. Accepts pipeline input from Get-B1Location

    .PARAMETER Force
        Perform the operation without prompting for confirmation. By default, this function will always prompt for confirmation unless -Confirm:$false or -Force is specified, or $ConfirmPreference is set to None.

    .EXAMPLE
        PS> Remove-B1Location -Name "Madrid"

            Successfully deleted Location: Madrid

    .EXAMPLE
        PS> Get-B1Location -Name "Madrid" | Remove-B1Location

        Successfully deleted Location: Madrid

    .FUNCTIONALITY
        BloxOneDDI
    #>

    [CmdletBinding(
        SupportsShouldProcess,
        ConfirmImpact = 'High'
    )]
    param(
        [Parameter(Mandatory=$true,ParameterSetName="Default")]
        [String]$Name,
        [Parameter(
          ValueFromPipeline = $true,
          ParameterSetName="Pipeline",
          Mandatory=$true
        )]
        [System.Object]$Object,
        [Switch]$Force
    )

    process {
        $ConfirmPreference = Confirm-ShouldProcess $PSBoundParameters
        if (!($Object)) {
            $Object = Get-B1Location -Name $Name -Strict
        }
        if ($Object) {
          $SplitID = $Object.id.split('/')
          if (("$($SplitID[0])/$($SplitID[1])") -ne "infra/location") {
              Write-Error "Error. Unsupported pipeline object. This function only supports 'infra/location' objects as input"
              return $null
          }
          if ($Object.count -eq 1) {
            $ObjectID = ($Object.id -Split ('/'))[2]
            if($PSCmdlet.ShouldProcess("$($Object.name) ($($ObjectID))")){
                $null = Invoke-CSP -Method DELETE -Uri "$(Get-B1CSPUrl)/api/infra/v1/locations/$($ObjectID)"
                if (Get-B1Location -id $($Object.id)) {
                    Write-Error "Error. Failed to delete Location: $($Object.name)"
                } else {
                    Write-Host "Successfully deleted Location: $($Object.name)" -ForegroundColor Green
                }
            }
          } else {
            Write-Error "More than one result returned. To remove multiple objects, pipe Get-B1Location into Remove-B1Location instead"
          }
        } else {
            Write-Error "Location not found"
        }
    }
}