From bb432b8516b06c90ddbc64706226f6f5447a6d36 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Sun, 27 Apr 2025 11:26:28 +0800 Subject: [PATCH] Fix BillpplzTransactionSummaryController cont'd --- .../BillplzTransactionSummaryController.php | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/BillplzTransactionSummaryController.php b/app/Http/Controllers/BillplzTransactionSummaryController.php index 9007045..0dc8b98 100644 --- a/app/Http/Controllers/BillplzTransactionSummaryController.php +++ b/app/Http/Controllers/BillplzTransactionSummaryController.php @@ -33,36 +33,29 @@ class BillplzTransactionSummaryController extends Controller $billIds = $transactionData->map(fn($x) => ['bill_id' => $x['bill_id'], 'account_own_by' => $x['account_own_by']]); - $billIds = $billIds->chunk(40); - - $queryBillIdsURL = $billIds->map(fn($x) => url(config('api.url_arrahn_portal') . '/api/billplz', ['bill_ids' => json_encode($x)])); + $billIds = $billIds->chunk(50); + $queryBillIdsURL = $billIds->map(fn($x) => config('api.url_arrahn_portal') . '/api/billplz?bill_ids=' . json_encode($x)); $getBillplzPromise = function($url){ return Http::async()->get($url); }; $resolveBillplzPromise = function($promise){ - $billplzBillsPromise = $promise->wait()->json(); - - if($billplzBillsPromise->failed()) { - - Log::error("ArrahnPay Portal API request failed for URL: {$$billplzBillsPromise->effectiveUri()->__toString()}", [ - 'status' => $billplzBillsPromise->status(), - 'body' => $billplzBillsPromise->body(), - ]); - - abort( response('Portal ArrahnPay kemungkinan tidak beroperasi. Waktu Operasi Portal ArrahnPay adalah dari 7.30 AM hingga 11.30 PM', 503) ); - - } - - return $billplzBillsPromise; + + try{ + $billplzBillsPromise = $promise->wait()->json(); + }catch(\Exception $e){ + Log::error("ArrahnPay Portal API request failed for URL: {$$billplzBillsPromise->effectiveUri()->__toString()}", [ + 'error' => $e->getMessage(), + ]); + + abort( response('Portal ArrahnPay kemungkinan tidak beroperasi. Waktu Operasi Portal ArrahnPay adalah dari 7.30 AM hingga 11.30 PM', 503) ); + } + + return $billplzBillsPromise; }; - $queryBillIdsURL = $queryBillIdsURL->map(fn($x) => $getBillplzPromise($x)) - ->map(fn($x) => $resolveBillplzPromise($x)); - - dd($queryBillIdsURL->all()); $mergeBillplzResponse = function($externalArray) { $merged = []; @@ -80,7 +73,10 @@ class BillplzTransactionSummaryController extends Controller return array_map('array_values', $merged); }; - $billplzBillsResponse = $billIds->map(fn($x) => $getBillplzResponse($x)); + $billplzBillsResponse = $queryBillIdsURL->map(fn($x) => $getBillplzPromise($x)) + ->map(fn($x) => $resolveBillplzPromise($x)) + ->all(); + $billplzBills = $mergeBillplzResponse($billplzBillsResponse); $data = array_map(fn($x, $y) => $this->processBillplzBills($x, $y), $billplzBills, [$transactionDataKOOP, $transactionDataPKB]);