0
0
mirror of https://github.com/salesagility/SuiteCRM.git synced 2024-11-24 08:36:48 +00:00
salesagility_SuiteCRM/Api/V8/JsonApi/Helper/PaginationObjectHelper.php
2023-07-18 15:53:08 +01:00

62 lines
1.6 KiB
PHP

<?php
namespace Api\V8\JsonApi\Helper;
use Api\V8\JsonApi\Response\MetaResponse;
use Api\V8\JsonApi\Response\PaginationResponse;
use Slim\Http\Request;
#[\AllowDynamicProperties]
class PaginationObjectHelper
{
/**
* @param integer $totalPages
* @param integer $numOfRecords
*
* @return MetaResponse
*/
public function getPaginationMeta($totalPages, $numOfRecords)
{
return new MetaResponse(
['total-pages' => $totalPages, 'records-on-this-page' => $numOfRecords]
);
}
/**
* @param Request $request
* @param integer $totalPages
* @param integer $number
*
* @return PaginationResponse
*/
public function getPaginationLinks(Request $request, $totalPages, $number)
{
$pagination = new PaginationResponse();
if ($number > 1) {
$pagination->setFirst($this->createPaginationLink($request, 1));
$pagination->setPrev($this->createPaginationLink($request, $number - 1));
}
if ($number + 1 <= $totalPages) {
$pagination->setNext($this->createPaginationLink($request, $number + 1));
$pagination->setLast($this->createPaginationLink($request, $totalPages));
}
return $pagination;
}
/**
* @param Request $request
* @param integer $number
*
* @return string
*/
private function createPaginationLink(Request $request, $number)
{
$queryParams = $request->getQueryParams();
$queryParams['page']['number'] = $number;
return sprintf('%s?%s', $request->getUri()->getPath(), urldecode(http_build_query($queryParams)));
}
}