magento2-docker/app/code/IpSupply/DataSheet/Block/Widget/DataSheetWidget.php

135 lines
4.5 KiB
PHP
Executable File

<?php
namespace IpSupply\DataSheet\Block\Widget;
use Magento\Framework\View\Element\Template;
use Magento\Widget\Block\BlockInterface;
use Magento\Framework\View\Element\Template\Context;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\UrlInterface;
use Magento\Framework\App\Request\Http;
use Magento\Framework\HTTP\Client\Curl;
class DataSheetWidget extends Template implements BlockInterface {
protected $_objectManager;
protected $_urlInterface;
protected $_request;
protected $_curl;
protected $_apiURL;
protected $_sheetPerPage;
public function __construct(Http $request, UrlInterface $urlInterface, Curl $curl, Context $context, array $data = []) {
$this->_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();
}
}