Improve query to speed up load

This commit is contained in:
Afiq Hamzah
2024-08-12 23:14:40 +08:00
parent 46cf6bd6bb
commit 3adf6995fb
2 changed files with 16 additions and 17 deletions
@@ -10,19 +10,19 @@ class BillplzTransactionSummaryController extends Controller
public function index(Request $request)
{
$date = $request->selectedDate ?? Carbon::now()->toDateString();
$transactionData = Http::arrahn()->get('/api/transaction/online/query', ['date' => $date, 'status' => 'paid'])->json();
$transactionData = array_map(fn($x) => ['arrahn_transactions' => $x], $transactionData);
$transactionData = collect($transactionData);
$transactionData = collect( Http::get(config('api.url_arrahn_portal') . '/api/billplz-transaction-review', ['date' => $date])->json() );
$transactionData = $transactionData->filter(fn($x) => $x['arrahn_transactions'][0]['paid_at'] != null);
$billIds = $transactionData->pluck('bill_id');
$billIds = $transactionData->pluck('arrahn_transactions.billplz_id');
$billplzBills = Http::get(config('api.url_arrahn_portal') . '/api/billplz', ['bill_ids' => json_encode($billIds)])->json();
$billplzBills = array_map(function($bill) {
$bill['paid_amount_formatted'] = floatval($bill['paid_amount']['amount']) / 100;
$billplzBills = collect($billplzBills)->map(function($bill) {
$bill['paid_amount_formatted'] = floatval($bill['paid_amount']['amount']) / 100;
return $bill;
}, $billplzBills);
});
$sumOfArrahnTransactions = $transactionData->sum(fn($x) => $x['arrahn_transactions'][0]['total_payment']);
$sumOfArrahnTransactions = $transactionData->sum(fn($x) => $x['arrahn_transactions']['total_payment']);
$sumOfBillplzTransactions = collect($billplzBills)->sum(fn($x) => $x['paid_amount_formatted']);
$numberOfArrahnTransactions = $transactionData->count();
@@ -30,6 +30,7 @@ class BillplzTransactionSummaryController extends Controller
$sumOfArrahnTransactions = 'RM ' . number_format($sumOfArrahnTransactions, 2);
$sumOfBillplzTransactions = 'RM ' . number_format($sumOfBillplzTransactions, 2);
if ($transactionData->count() !== count($billplzBills)) {
throw new \Exception("The number of items in transactionData and billplzBills must be the same.");
}
@@ -37,31 +37,29 @@
<x-slot name="body">
@forelse ($billPlzTransactionReview as $data)
<tr>
<x-table.data :content="$data['bill_id']" />
<x-table.data :content="$data['billplz_bill']['id']" />
<td class="px-5 py-5 border-b border-gray-200 bg-white text-sm">
<div class="flex items-center">
<div class="ml-3 text-gray-900 whitespace-no-wrap">
@foreach ($data['arrahn_transactions'] as $transaction)
<div class="flex items-center">
<div class="ml-3">
<p class="text-gray-900 whitespace-no-wrap">
status : <span
class="inline-block bg-green-600 text-white px-2 py-0.5 rounded text-xs font-medium">{{ $transaction['status'] }}</span>
class="inline-block bg-green-600 text-white px-2 py-0.5 rounded text-xs font-medium">{{ $data['arrahn_transactions']['status'] }}</span>
<br>
total_payment:
{{ number_format((float) $transaction['total_payment'], 2, '.', '') }}<br>
norujukan: {{ $transaction['norujukan'] }}
{{ number_format((float) $data['arrahn_transactions']['total_payment'], 2, '.', '') }}<br>
norujukan: {{ $data['arrahn_transactions']['norujukan'] }}
</p>
<br>
<p class="text-gray-900 whitespace-no-wrap">
kodcaw: {{ $transaction['kodcaw'] }} <br>
customer_name: {{ $transaction['customer_name'] }} <br>
kodcaw: {{ $data['arrahn_transactions']['kodcaw'] }} <br>
customer_name: {{ $data['arrahn_transactions']['customer_name'] }} <br>
</p>
</div>
</div>
<br>
@endforeach
</div>
</div>
</td>