Fix BillpplzTransactionSummaryController

This commit is contained in:
Afiq Hamzah
2025-04-27 10:57:57 +08:00
parent 8d6b8d52ba
commit 8054392414
@@ -32,21 +32,56 @@ class BillplzTransactionSummaryController extends Controller
$transactionData = $this->processArrahnTransactions($transactionData);
$billIds = $transactionData->map(fn($x) => ['bill_id' => $x['bill_id'], 'account_own_by' => $x['account_own_by']]);
$billIds = $billIds->chunk(40);
$billplzBillsResponse = Http::get(config('api.url_arrahn_portal') . '/api/billplz', ['bill_ids' => json_encode($billIds)]);
$queryBillIdsURL = $billIds->map(fn($x) => url(config('api.url_arrahn_portal') . '/api/billplz', ['bill_ids' => json_encode($x)]));
if($billplzBillsResponse->failed()) {
Log::error("ArrahnPay Portal API request failed for URL: {$billplzBillsResponse->effectiveUri()->__toString()}", [
'status' => $billplzBillsResponse->status(),
'body' => $billplzBillsResponse->body(),
]);
abort( response('Portal ArrahnPay kemungkinan tidak beroperasi. Waktu Operasi Portal ArrahnPay adalah dari 7.30 AM hingga 11.30 PM', 503) );
}
$getBillplzPromise = function($url){
return Http::async()->get($url);
};
$billplzBills = $billplzBillsResponse->json();
$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;
};
$queryBillIdsURL = $queryBillIdsURL->map(fn($x) => $getBillplzPromise($x))
->map(fn($x) => $resolveBillplzPromise($x));
dd($queryBillIdsURL->all());
$mergeBillplzResponse = function($externalArray) {
$merged = [];
foreach ($externalArray as $key => $subArray) {
foreach (['KOPKB', 'PKB'] as $type) {
if (!isset($merged[$type])) {
$merged[$type] = [];
}
$merged[$type] = array_merge($merged[$type], $subArray[$type]);
}
}
return array_map('array_values', $merged);
};
$billplzBillsResponse = $billIds->map(fn($x) => $getBillplzResponse($x));
$billplzBills = $mergeBillplzResponse($billplzBillsResponse);
$data = array_map(fn($x, $y) => $this->processBillplzBills($x, $y), $billplzBills, [$transactionDataKOOP, $transactionDataPKB]);