_objectManager = ObjectManager::getInstance(); $this->_urlInterface = $urlInterface; $this->_request = $request; $this->_curl = $curl; $this->_apiURL = "https://disti.nswteam.net/api/getListDataSheet"; $this->_sheetPerPage = 20; parent::__construct($context, $data); } function getDataSheet() { $response = array(); // Get data sheet $pageNumber = $this->_request->getParam("page") ? $this->_request->getParam("page") : 1; $searchKey = $this->_request->getParam("search") ? $this->_request->getParam("search") : ""; $pageURL = $pageNumber - 1; $source= empty($this->getData('source')) ? "" : urlencode($this->getData('source')); $url = $this->_apiURL."?limit=".$this->_sheetPerPage."&page=".$pageURL."&search=".urlencode($searchKey)."&source=".$source; $this->_curl->get($url); $dataSheet = json_decode($this->_curl->getBody()); $response["data"] = $dataSheet->data; // return active page $response["activePage"] = $pageNumber; // return search key $response["searchKey"] = $searchKey; // Total pagination $currentURL = $this->_urlInterface->getCurrentUrl(); $haveLeft = FALSE; $haveRight = FALSE; $pagination = array(); $totalPagination = ceil($dataSheet->totalProduct/$this->_sheetPerPage); if($totalPagination > 5) { if($pageNumber - 2 > 1 && $totalPagination - $pageNumber > 2){ $index = $pageNumber - 2; for($i = 1; $i <= 5; $i++) { $item = $this->_request->getParam("page") ? str_replace("page=".$pageNumber, "page=".$index, $currentURL) : $currentURL."?page=".$index; array_push($pagination, array( "index" => $index, "url" => $item, )); $index++; } $haveLeft = TRUE; $haveRight = TRUE; } else if($pageNumber - 2 <= 1 && $totalPagination - $pageNumber > 2) { $index = 1; for($i = 1; $i <= 5; $i++) { $item = $this->_request->getParam("page") ? str_replace("page=".$pageNumber, "page=".$index, $currentURL) : $currentURL."?page=".$index; array_push($pagination, array( "index" => $index, "url" => $item, )); $index++; } $haveRight = TRUE; } else if($pageNumber - 2 > 1 && $totalPagination - $pageNumber <= 2) { $index = $pageNumber - 2 - (2 - ($totalPagination - $pageNumber)); for($i = 1; $i <= 5; $i++) { $item = $this->_request->getParam("page") ? str_replace("page=".$pageNumber, "page=".$index, $currentURL) : $currentURL."?page=".$index; array_push($pagination, array( "index" => $index, "url" => $item, )); $index++; } $haveLeft = TRUE; } } else { for($i = 1; $i <= $totalPagination; $i++) { $item = $this->_request->getParam("page") ? str_replace("page=".$pageNumber, "page=".$i, $currentURL) : $currentURL."?page=".$i; array_push($pagination, array( "index" => $i, "url" => $item, )); } } $response["pagination"] = $pagination; $response["haveLeft"] = $haveLeft; $response["haveRight"] = $haveRight; $response["previousPage"] = $this->_request->getParam("page") ? $pageNumber > 1 ? str_replace("page=".$pageNumber, "page=".$pageNumber - 1, $currentURL) : str_replace("page=".$pageNumber, "page=".$totalPagination, $currentURL) : $currentURL."?page=".$index; $response["nextPage"] = $this->_request->getParam("page") ? $pageNumber < $totalPagination ? str_replace("page=".$pageNumber, "page=".$pageNumber + 1, $currentURL) : str_replace("page=".$pageNumber, "page=1", $currentURL) : $currentURL."?page=".$i; return $response; } function getAssetUrl($asset) { $assetRepository = $this->_objectManager->get('Magento\Framework\View\Asset\Repository'); return $assetRepository->createAsset($asset)->getUrl(); } }