From 633de2dace88ec0418f6c67f3d56a1042eda773a Mon Sep 17 00:00:00 2001 From: Fawwaz Anugrah Wiradhika Dharmasatya <13520086.std.stei.itb.ac.id> Date: Mon, 28 Nov 2022 14:04:53 +0700 Subject: [PATCH] feat: pagination sudah kelar harusnya --- Controller/SubsciberController.php | 31 +++++++++++++++++++++++++----- View/Pages/PremiumSinger.php | 9 ++++++--- static/js/premium-singer.js | 0 3 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 static/js/premium-singer.js diff --git a/Controller/SubsciberController.php b/Controller/SubsciberController.php index 2b408d8..98abb2a 100644 --- a/Controller/SubsciberController.php +++ b/Controller/SubsciberController.php @@ -10,6 +10,8 @@ use Model\Relations\Subscription; use Lib\Service\Api\FetchAPI; class SubsciberController { + const DEFAULT_PAGE = 1; + const DEFAULT_LIMIT = 10; static function setStatus(IRequest $req, IResponse $res) { $subscriber = new Subscription($req->db); $transaction = $subscriber->transaction(); @@ -140,11 +142,11 @@ class SubsciberController { } } - static function fetchSubscriptions(int $user_id,$db){ + static function fetchSubscriptions(int $page,int $limit, int $user_id,$db){ $fetcher = new FetchAPI(getenv("REST_HOST")); $param = [ - "page"=>1, - "limit"=>10 + "page"=>$page, + "limit"=>$limit, ]; $rest_key = getenv("REST_KEY"); $headers = [ @@ -196,7 +198,13 @@ class SubsciberController { static function getPremiumSinger(IRequest $req, IResponse $res){ //data ada $user_id = $req->auth?$req->auth->user_id:-1; - $data = SubsciberController::fetchSubscriptions($user_id,$req->db); + $page = $req->getQuery("page") ? + ($req->getQuery("page")>0 ? $req->getQuery("page") : SubsciberController::DEFAULT_PAGE) + : SubsciberController::DEFAULT_PAGE; + $limit = $req->getQuery("limit") ? + ($req->getQuery("limit")>0?$req->getQuery("limit"):SubsciberController::DEFAULT_LIMIT) + :SubsciberController::DEFAULT_LIMIT; + $data = SubsciberController::fetchSubscriptions($page,$limit,$user_id,$req->db); if(!$data){ // return $res->json([ // "status"=>"failed", @@ -208,11 +216,24 @@ class SubsciberController { } // $data = json_decode($output,true)["data"]; - $page = 1; + //fetch max page + $fetcher = new FetchAPI(getenv("REST_HOST")); + $param = [ + "page-size"=>$limit, + ]; + $rest_key = getenv("REST_KEY"); + $headers = [ + "X-API-KEY"=> $rest_key + ]; + $output = $fetcher->get("/singers/max-page",$param,$headers); $total_page = 1; + if($output){ + $total_page = json_decode($output,true)["data"]; + } return $res->view("Pages/PremiumSinger", [ "singers" => $data, "page" => $page, + "limit"=>$limit, "next_page" => $page < $total_page ? $page + 1 : null, "prev_page" => $page > 1 ? $page - 1 : null, "auth" => $req->auth, diff --git a/View/Pages/PremiumSinger.php b/View/Pages/PremiumSinger.php index 90eefeb..590b064 100644 --- a/View/Pages/PremiumSinger.php +++ b/View/Pages/PremiumSinger.php @@ -9,6 +9,9 @@ "/static/css/premium-singer.css", "/static/css/form.css" ], + "scripts"=>[ + "/static/js/premium-singer.js" + ], ]); ?> @@ -29,7 +32,7 @@ foreach($singers as $number=>$singer) { ?> <tr> - <td><?= $number+1 ?></td> + <td><?= (10*($page-1))+($number+1) ?></td> <td><?= $singer["name"] ?></td> <?php if(isset($auth)){ ?> <td> @@ -58,7 +61,7 @@ <?php $this->component("Component/Pagination", [ "page_number" => $page, - "next_page" => isset($next_page) && !is_null($next_page) ? "/admin/users/?page=$next_page": null, - "prev_page" => isset($prev_page) && !is_null($prev_page) ? "/admin/users/?page=$prev_page": null, + "next_page" => isset($next_page) && !is_null($next_page) ? "/premium?page=$next_page&limit=$limit": null, + "prev_page" => isset($prev_page) && !is_null($prev_page) ? "/premium?page=$prev_page&limit=$limit": null, ]) ?> \ No newline at end of file diff --git a/static/js/premium-singer.js b/static/js/premium-singer.js new file mode 100644 index 0000000..e69de29 -- GitLab