plugins/FundraisingBox/Public/fb/Get-Recurring.ps1


function Get-Recurring {
    [CmdletBinding(DefaultParameterSetName = 'OnePage')]
    param (

        [Parameter(Mandatory=$true, ParameterSetName = 'Single')]
        # [Parameter(Mandatory=$true, ParameterSetName = 'AllPages')]
         [Int] $Id

        ,[Parameter(Mandatory=$false, ParameterSetName = 'OnePage')]
         [Parameter(Mandatory=$false, ParameterSetName = 'AllPages')]
         [DateTime]$StartMin = [datetime]::MinValue

        ,[Parameter(Mandatory=$false, ParameterSetName = 'OnePage')]
         [Parameter(Mandatory=$false, ParameterSetName = 'AllPages')]
         [DateTime]$NextMin = [datetime]::MinValue

        #,[Parameter(Mandatory=$false, ParameterSetName = 'OnePage')][Int] $SkipToken = 0
        ,[Parameter(Mandatory=$false, ParameterSetName = 'OnePage')][Int] $First = 10

        ,[Parameter(Mandatory=$false, ParameterSetName = 'AllPages')]
         [Switch] $All = $false

    )

    begin {

        # Create params

        Switch ( $PSCmdlet.ParameterSetName ) {

            # Single record
            'Single' {

                $params = [Hashtable]@{
                    "Object" = "recurrings/$( $Id )"
                    "Method" = "GET"
                    "Paging" = $False
                }

                break
            }

            # All pages
            'AllPages' {

                $params = [Hashtable]@{
                    "Object" = "recurrings"
                    "Method" = "GET"
                    "Paging" = $True
                }

                If ( $NextMin -ne [datetime]::MinValue ) {
                    $params.Add( "Query", [PSCustomObject]@{"next_min"=$NextMin.toString("yyyy-MM-dd HH:mm:ss")} )
                }

                If ( $StartMin -ne [datetime]::MinValue ) {
                    $params.Add( "Query", [PSCustomObject]@{"next_min"=$StartMin.toString("yyyy-MM-dd HH:mm:ss")} )
                }

                break
            }

            # Single page
            Default {

                $params = [Hashtable]@{
                    "Object" = "recurrings"
                    "Method" = "GET"
                    "Paging" = $False
                    "Pagesize" = $First
                }

                If ( $NextMin -ne [datetime]::MinValue ) {
                    $params.Add( "Query", [PSCustomObject]@{"next_min"=$NextMin.toString("yyyy-MM-dd HH:mm:ss")} )
                }

                If ( $StartMin -ne [datetime]::MinValue ) {
                    $params.Add( "Query", [PSCustomObject]@{"next_min"=$StartMin.toString("yyyy-MM-dd HH:mm:ss")} )
                }

            }

        }

    }

    process {

        # add verbose flag, if set
        If ( $PSBoundParameters["Verbose"].IsPresent -eq $true ) {
            $params.Add("Verbose", $true)
        }

        # Request fields
        $recurrings = Invoke-FrBox @params

        # return
        $recurrings

    }

    end {

    }

}