Sources/Console/New-Pagination.ps1
|
using namespace Belin.UI using namespace System.Web <# .SYNOPSIS Creates a new pagination. .OUTPUTS The newly created pagination. #> function New-Pagination { [CmdletBinding(DefaultParameterSetName = "ItemsPerPage")] [OutputType([Belin.UI.Pagination])] param ( # The number of items per page. [Parameter(ParameterSetName = "ItemsPerPage", Position = 1)] [ValidateRange(1, 1000)] [int] $ItemsPerPage = 25, # The current page index. [Parameter(ParameterSetName = "ItemsPerPage")] [ValidateRange("NonNegative")] [int] $CurrentPageIndex, # The total number of items. [Parameter(ParameterSetName = "ItemsPerPage")] [ValidateRange("NonNegative")] [int] $TotalItemCount, # The hash table providing the query. [Parameter(Mandatory, ParameterSetName = "Query")] [hashtable] $Query, # The string providing the query. [Parameter(Mandatory, ParameterSetName = "QueryString")] [AllowEmptyString()] [string] $QueryString, # The maximum number of items allowed per page. [Parameter(ParameterSetName = "Query")] [Parameter(ParameterSetName = "QueryString")] [ValidateRange(1, 1000)] [int] $MaxItemsPerPage = 1000 ) switch ($PSCmdlet.ParameterSetName) { "Query" { return [Pagination]::FromQuery($Query, $MaxItemsPerPage) } "QueryString" { return [Pagination]::FromQuery([HttpUtility]::ParseQueryString($QueryString), $MaxItemsPerPage) } default { return [Pagination]@{ CurrentPageIndex = $CurrentPageIndex; ItemsPerPage = $ItemsPerPage; TotalItemCount = $TotalItemCount } } } } |