functions/Private/Converting/ConvertTo-MgaQuery.ps1

function ConvertTo-MgaQuery {
    param (
        $Uri,
        $Top,
        $Skip,
        $Count,
        $OrderBy,
        $Expand,
        $Select
    )
    function Update-Query {
        param (
            $Query,
            $Uri,
            [bool]$QueryEnabled
        )
        if ($QueryEnabled -eq $true) {
            $Query = "&$Query"
        }
        else {
            $Query = "?$Query"           
        }
        $Uri = "$Uri$Query"
        return $Uri, $true
    }
    $QueryEnabled = $false
    if ($Top) {
        $Query = "`$top=$Top"
        $Result = Update-Query -Query $Query -Uri $Uri -QueryEnabled $QueryEnabled
        $Uri = $Result[0]
        $QueryEnabled = $Result[1]
    } 
    if ($Skip) {
        $Query = "`$Skip=$Skip"
        $Result = Update-Query -Query $Query -Uri $Uri -QueryEnabled $QueryEnabled
        $Uri = $Result[0]
        $QueryEnabled = $Result[1]
    } 
    if ($Count) {
        $Query = "`$Count=$Count"
        $Result = Update-Query -Query $Query -Uri $Uri -QueryEnabled $QueryEnabled
        $Uri = $Result[0]
        $QueryEnabled = $Result[1]
    }
    if ($OrderBy) {
        $Query = "`$OrderBy=$OrderBy"
        $Result = Update-Query -Query $Query -Uri $Uri -QueryEnabled $QueryEnabled
        $Uri = $Result[0]
        $QueryEnabled = $Result[1]
    }
    if ($Expand) {
        $Query = "`$Expand=$Expand"
        $Result = Update-Query -Query $Query -Uri $Uri -QueryEnabled $QueryEnabled
        $Uri = $Result[0]
        $QueryEnabled = $Result[1]
    }
    if ($Select) {
        $i = 1
        foreach ($Property in $Select) {
            if ($i -eq $Select.Count) {
                $SelectString += $Property
            }
            else {
                $i++
                $SelectString += "$Property,"
            }   
        }
        $Query = "`$Select=$SelectString"
        $Result = Update-Query -Query $Query -Uri $Uri -QueryEnabled $QueryEnabled
        $Uri = $Result[0]
        $QueryEnabled = $Result[1]
    }
    if ($QueryEnabled -eq $true) {
        Write-Verbose "Added Query Parameters: $Uri"
    }
    return $Uri
}