From 940dbf76731676724333e154c1f506bd12ad9bd2 Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Mon, 12 Aug 2024 21:44:35 +0800 Subject: [PATCH] Add billplz transaction summary --- .../BillplzTransactionSummaryController.php | 51 ++++++++++ resources/views/components/card.blade.php | 21 ++++ .../index.blade.php | 96 +++++++++++++++++++ .../views/onlineTransaction/home.blade.php | 17 ++-- routes/web.php | 2 + 5 files changed, 181 insertions(+), 6 deletions(-) create mode 100644 app/Http/Controllers/BillplzTransactionSummaryController.php create mode 100644 resources/views/components/card.blade.php create mode 100644 resources/views/online/billplz-transaction-summary/index.blade.php diff --git a/app/Http/Controllers/BillplzTransactionSummaryController.php b/app/Http/Controllers/BillplzTransactionSummaryController.php new file mode 100644 index 0000000..9433a0c --- /dev/null +++ b/app/Http/Controllers/BillplzTransactionSummaryController.php @@ -0,0 +1,51 @@ +selectedDate ?? Carbon::now()->toDateString(); + + $transactionData = Http::get(config('api.url_arrahn_portal') . '/api/billplz-transaction-review', ['date' => $date])->effectiveUri(); + + $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'); + $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; + return $bill; + }, $billplzBills); + + $sumOfArrahnTransactions = $transactionData->sum(fn($x) => $x['arrahn_transactions'][0]['total_payment']); + $sumOfBillplzTransactions = collect($billplzBills)->sum(fn($x) => $x['paid_amount_formatted']); + $numberOfArrahnTransactions = $transactionData->count(); + + $paymentGatewayCost = 'RM ' . number_format($sumOfBillplzTransactions - $sumOfArrahnTransactions, 2); + $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."); + } + + $billPlzTransactionReview = $transactionData->zip($billplzBills)->map(function ($zippedItem) { + [$transactionData, $billplzBill] = $zippedItem; + + $transactionData['billplz_bill'] = $billplzBill; + + return $transactionData; + }); + + + return view('online.billplz-transaction-summary.index', compact( 'billPlzTransactionReview', 'sumOfArrahnTransactions', 'sumOfBillplzTransactions', 'paymentGatewayCost', 'numberOfArrahnTransactions', 'date')); + } + +} diff --git a/resources/views/components/card.blade.php b/resources/views/components/card.blade.php new file mode 100644 index 0000000..403e204 --- /dev/null +++ b/resources/views/components/card.blade.php @@ -0,0 +1,21 @@ + +@props([ + 'title' => '', + 'subtitle' => '', +]) + +
+
+
+
+
+ {{ $title }} +
+
+

{{ $subtitle }}

+
+ +
+
+
+
diff --git a/resources/views/online/billplz-transaction-summary/index.blade.php b/resources/views/online/billplz-transaction-summary/index.blade.php new file mode 100644 index 0000000..272394d --- /dev/null +++ b/resources/views/online/billplz-transaction-summary/index.blade.php @@ -0,0 +1,96 @@ +@extends('layouts.app') +@section('content') + +@section('title', 'Billplz Transaction Summary') + + + + +
+ + +
+ +
-
+ +
=
+ +
+
+
+ +
x
+ +
=
+ + +
+ + + + + + + + @forelse ($billPlzTransactionReview as $data) + + + +
+
+ @foreach ($data['arrahn_transactions'] as $transaction) +
+
+

+ status : {{ $transaction['status'] }} +
+ total_payment: + {{ number_format((float) $transaction['total_payment'], 2, '.', '') }}
+ norujukan: {{ $transaction['norujukan'] }} + +

+
+

+ kodcaw: {{ $transaction['kodcaw'] }}
+ customer_name: {{ $transaction['customer_name'] }}
+

+
+
+
+ @endforeach +
+
+ + +
+
+
+
+

+ billplz_status : {{ $data['billplz_bill']['state'] ?? '' }} +
+ billplz_paid_amount: + {{ number_format($data['billplz_bill']['paid_amount']['amount'] / 100, 2, '.', '') }} +
+

+
+
+
+
+
+ + + @empty + + + + @endforelse +
+
+
+@endsection diff --git a/resources/views/onlineTransaction/home.blade.php b/resources/views/onlineTransaction/home.blade.php index 134b461..dbef7c0 100644 --- a/resources/views/onlineTransaction/home.blade.php +++ b/resources/views/onlineTransaction/home.blade.php @@ -30,18 +30,23 @@ @endif - - -
- + + +
+ +
+

Summary Transaksi Billplz

+
-
+
+ +