From ffdc965e3cd8ecc1d01f2e96b01322d1d894dc00 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Sun, 1 Dec 2024 01:35:07 +0800 Subject: [PATCH 01/28] added first split --- .env.example | 13 ++ config/services.php | 7 +- .../partials/table-pembiayaan.blade.php | 137 +++++++++++++----- 3 files changed, 122 insertions(+), 35 deletions(-) diff --git a/.env.example b/.env.example index a42d7e0..c3461f5 100644 --- a/.env.example +++ b/.env.example @@ -51,3 +51,16 @@ PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +BILLPLZ_PRODUCTION_API_KEY="f3e82fe1-a422-4660-97f0-65cc59ff6c47" +BILLPLZ_PRODUCTION_X_SIGNATURE="S-alZUbzmD2_TF3vmrRqgehQ" +BILLPLZ_PRODUCTION_COLLECTION_ID="5aosv2dg" + +BILLPLZ_SANDBOX_API_KEY="abecfd0c-98d8-4635-abc2-2fcba8c60c11" +BILLPLZ_SANDBOX_X_SIGNATURE="S-GWr7z03XjAhqPsFfu_H5nQ" +BILLPLZ_SANDBOX_COLLECTION_ID="z0r4kjhi" + +BILLPLZ_SANDBOX_KOPKB_API_KEY="abecfd0c-98d8-4635-abc2-2fcba8c60c11" +BILLPLZ_SANDBOX_KOPKB_X_SIGNATURE="S-GWr7z03XjAhqPsFfu_H5nQ" +BILLPLZ_SANDBOX_KOPKB_COLLECTION_ID="uae40muk" + diff --git a/config/services.php b/config/services.php index 833feeb..6995833 100644 --- a/config/services.php +++ b/config/services.php @@ -34,13 +34,18 @@ return [ 'production' => [ 'api_key' => env('BILLPLZ_PRODUCTION_API_KEY', 'f3e82fe1-a422-4660-97f0-65cc59ff6c47'), 'x_signature' => env('BILLPLZ_PRODUCTION_X_SIGNATURE', 'S-alZUbzmD2_TF3vmrRqgehQ'), - 'collection_id' => env('BILLPLZ_SANDBOX_COLLECTION_ID', '5aosv2dg'), + 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', '5aosv2dg'), ], 'sandbox' => [ 'api_key' => env('BILLPLZ_SANDBOX_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), 'x_signature' => env('BILLPLZ_SANDBOX_X_SIGNATURE', 'S-GWr7z03XjAhqPsFfu_H5nQ'), 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', 'z0r4kjhi'), ], + 'sandbox_kopkb' => [ + 'api_key' => env('BILLPLZ_SANDBOX_KOPKB_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), + 'x_signature' => env('BILLPLZ_SANDBOX_KOPKB_X_SIGNATURE', 'S-GWr7z03XjAhqPsFfu_H5nQ'), + 'collection_id' => env('BILLPLZ_PRODUCTION_KOPKB_COLLECTION_ID', 'z0r4kjhi'), + ], ], ]; diff --git a/resources/views/includes/partials/table-pembiayaan.blade.php b/resources/views/includes/partials/table-pembiayaan.blade.php index 42aaaab..2fb48e4 100644 --- a/resources/views/includes/partials/table-pembiayaan.blade.php +++ b/resources/views/includes/partials/table-pembiayaan.blade.php @@ -1,35 +1,104 @@ -
- - - - - - - - - - - - - @foreach ($pembiayaan as $data) - - - - - - - - - @endforeach - -
#No RujukanTempohT AkhirKeuntunganCawangan
- disabled_payment ? 'disabled' : '' }} /> - - - {{ $data->norujukan }} - - {{ $data->tempoh }}{{ $data->tarikh_akhir }}{{ $data->upah_tawarruq_formatted }}{{ $data->cawangan_name }}
- "Swipe" ke kiri +
+ +
+ +
+ +
+ + + + + + + + + + + + + @foreach ($pembiayaan as $data) + + + + + + + + + @endforeach + +
#No RujukanTempohT AkhirKeuntunganCawangan
+ disabled_payment ? 'disabled' : '' }} /> + + + {{ $data->norujukan }} + + {{ $data->tempoh }}{{ $data->tarikh_akhir }}{{ $data->upah_tawarruq_formatted }}{{ $data->cawangan_name }}
+ "Swipe" ke kiri +
+ + +
+ + + + + + + + + + + + + @foreach ($pembiayaan as $data) + + + + + + + + + @endforeach + +
#No RujukanTempohT AkhirKeuntunganCawangan
+ disabled_payment ? 'disabled' : '' }} /> + + + {{ $data->norujukan }} + + {{ $data->tempoh }}{{ $data->tarikh_akhir }}{{ $data->upah_tawarruq_formatted }}{{ $data->cawangan_name }}
+ "Swipe" ke kiri +
From 87da6f7748520bf3efe4779a09371f7962557119 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Tue, 3 Dec 2024 23:22:20 +0800 Subject: [PATCH 02/28] design cart --- .../includes/bayaran/pembayaransag.blade.php | 154 +++++++++++++----- .../partials/table-pembiayaan.blade.php | 135 ++++----------- 2 files changed, 150 insertions(+), 139 deletions(-) diff --git a/resources/views/includes/bayaran/pembayaransag.blade.php b/resources/views/includes/bayaran/pembayaransag.blade.php index d01dcbc..8da0f6b 100644 --- a/resources/views/includes/bayaran/pembayaransag.blade.php +++ b/resources/views/includes/bayaran/pembayaransag.blade.php @@ -27,13 +27,14 @@
-
-
+
+
+
-

Pembayaran

+

Pembayaran PKB

@@ -43,20 +44,11 @@
- - - + - - - + @php $counter = 1;$jenisbayaran = 'tawarruq'; $totalupahasal = 1; $errorcount = 0; @endphp @@ -64,9 +56,6 @@ @if($bayar['hargajualan'] != '') - @@ -96,20 +85,6 @@ } @endphp - + + + @php $counter++; @endphp + @endif + @endforeach +
No
Rujukan
No Rujukan Tarikh Akhir BayaranBaki
Pembiayaan
Baki Pembiayaan
{{ $bayar['norujukan'] }} @@ -120,14 +95,105 @@
+
+
- +
+ {{--
+
+ +
+
+ RM1.00 +
+
+
+
+ +
+ +
+ RM{{ number_format($totalupahasal,2) }} +
+
--}} + + *Jangan biarkan kotak bayaran ditinggalkan kosong, Sila masukkan amaun! +
+
+ +
+
+
+
+
+

Pembayaran KOPKB

+ +
+ +
+
+
+
+ + + + + + + + + + @php $counter = 1;$jenisbayaran = 'tawarruq'; $totalupahasal = 1; $errorcount = 0; @endphp + @foreach($arraybayar as $index=>$bayar) + @if($bayar['hargajualan'] != '') + + + + @php + + $t_matang = strtotime($bayar['t_matang']); + $t_akhir = date("d/m/Y", $t_matang); + + if($bayar['lelong_tawarruq'] == 0) + { + $t_matang = strtotime($bayar['t_matang1']); + $t_akhir = date("d/m/Y", $t_matang); + } + @endphp + + @php + $upahtawarruq = $bayar['upah_tawarruq']; + $upahtawarruq = floatval(str_replace(',','',$upahtawarruq)); + + $totalupahasal = $totalupahasal + $upahtawarruq; + + + if(floatval($upahtawarruq) == 0){ + $errorcount++; + } + + @endphp + + + @php $counter++; @endphp @@ -181,6 +247,20 @@ +
+
+
+
+
+
+

Pembayaran KOPKB

+ +
+
+
+
+
+
diff --git a/resources/views/includes/partials/table-pembiayaan.blade.php b/resources/views/includes/partials/table-pembiayaan.blade.php index 2fb48e4..c1af081 100644 --- a/resources/views/includes/partials/table-pembiayaan.blade.php +++ b/resources/views/includes/partials/table-pembiayaan.blade.php @@ -1,104 +1,35 @@ -
- -
- -
- -
-
No
Rujukan
Tarikh AkhirBayaranBaki
Pembiayaan
+ {{ $bayar['norujukan'] }} + + {{ $t_akhir }} + + + + + + + +
- +
+
+ + + + + + + + + + + + @foreach ($pembiayaan as $data) - - - - - - + + + + + + - - - @foreach ($pembiayaan as $data) - - - - - - - - - @endforeach - -
#No RujukanTempohT AkhirKeuntunganCawangan
#No RujukanTempohT AkhirKeuntunganCawangan + disabled_payment ? 'disabled' : '' }} /> + + + {{ $data->norujukan }} + + {{ $data->tempoh }}{{ $data->tarikh_akhir }}{{ $data->upah_tawarruq_formatted }}{{ $data->cawangan_name }}
- disabled_payment ? 'disabled' : '' }} /> - - - {{ $data->norujukan }} - - {{ $data->tempoh }}{{ $data->tarikh_akhir }}{{ $data->upah_tawarruq_formatted }}{{ $data->cawangan_name }}
- "Swipe" ke kiri -
- - -
- - - - - - - - - - - - - @foreach ($pembiayaan as $data) - - - - - - - - - @endforeach - -
#No RujukanTempohT AkhirKeuntunganCawangan
- disabled_payment ? 'disabled' : '' }} /> - - - {{ $data->norujukan }} - - {{ $data->tempoh }}{{ $data->tarikh_akhir }}{{ $data->upah_tawarruq_formatted }}{{ $data->cawangan_name }}
- "Swipe" ke kiri -
-
+ @endforeach + + + "Swipe" ke kiri +
\ No newline at end of file From 2ab2980b106e332cbce0842efc4bbe69276bd779 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Wed, 4 Dec 2024 01:15:27 +0800 Subject: [PATCH 03/28] fix font awesome add cart.js to make cart function --- public/js/miscellaneous/cart.js | 22 ++++ .../includes/bayaran/pembayaransag.blade.php | 102 +++++++++--------- resources/views/includes/main/head.blade.php | 5 +- 3 files changed, 77 insertions(+), 52 deletions(-) create mode 100644 public/js/miscellaneous/cart.js diff --git a/public/js/miscellaneous/cart.js b/public/js/miscellaneous/cart.js new file mode 100644 index 0000000..3d0a293 --- /dev/null +++ b/public/js/miscellaneous/cart.js @@ -0,0 +1,22 @@ +const test = () =>{ + let btn_payment = document.getElementById('bayarsbmt'); + + console.log(btn_payment,rad_payment); +} + +let checked_rad = () =>{ + let rad_payment = document.getElementById('radpembayaran'); + + if(rad_payment.checked){ + console.log('checked'); + btn_payment.disabled = false; + }else{ + console.log('not-checked'); + btn_payment.disabled = true; + } +} + +document.addEventListener('DOMContentLoaded', function () { + console.log('Document is fully loaded and parsed.'); + // Perform your actions here +}); \ No newline at end of file diff --git a/resources/views/includes/bayaran/pembayaransag.blade.php b/resources/views/includes/bayaran/pembayaransag.blade.php index 8da0f6b..33f452a 100644 --- a/resources/views/includes/bayaran/pembayaransag.blade.php +++ b/resources/views/includes/bayaran/pembayaransag.blade.php @@ -13,7 +13,7 @@ Bayar SAG | Portal Pelanggan -
+
@csrf @@ -28,16 +28,15 @@
-
-
+
+
-

Pembayaran PKB

- +

PKB

+
-
@@ -128,13 +127,13 @@
-
+
-

Pembayaran KOPKB

- +

KOPKB

+
@@ -204,66 +203,67 @@
-
-
- -
- -
- RM1.00 -
-
-
-
- -
- -
- RM{{ number_format($totalupahasal,2) }} -
-
*Jangan biarkan kotak bayaran ditinggalkan kosong, Sila masukkan amaun!
- - -
-
-
-
-
- - -
- Batal  - - @if($totalupahasal == 1.00 || $errorcount > 0) - - @else - - @endif -
-
-
-
+
+
-

Pembayaran KOPKB

- +

Pembayaran

+
+
+
+
+ +
+ +
+ RM1.00 +
+
+
+
+ +
+ +
+ RM{{ number_format($totalupahasal,2) }} +
+
+
+
+ +
+
+
+
+
+ + +
+ Batal  + + @if($totalupahasal == 1.00 || $errorcount > 0) + + @else + + @endif +
- + +{{-- --}} + + + From de143de7ec5a1a865670bdfa11ca2b0e6564706c Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Wed, 4 Dec 2024 22:11:31 +0800 Subject: [PATCH 04/28] design pembayaransag and omit google maps --- public/js/miscellaneous/cart.js | 55 +++++++++++++++---- .../auth/pertama-kali/firsttime.blade.php | 2 +- .../includes/bayaran/pembayaransag.blade.php | 24 +++++--- .../includes/main/footercontent.blade.php | 2 +- .../views/includes/main/navigation.blade.php | 6 ++ resources/views/layouts/indexfifth.blade.php | 2 +- resources/views/pages/maps.blade.php | 2 +- 7 files changed, 69 insertions(+), 24 deletions(-) diff --git a/public/js/miscellaneous/cart.js b/public/js/miscellaneous/cart.js index 3d0a293..03f28c6 100644 --- a/public/js/miscellaneous/cart.js +++ b/public/js/miscellaneous/cart.js @@ -1,22 +1,53 @@ -const test = () =>{ - let btn_payment = document.getElementById('bayarsbmt'); +// const test = () =>{ +// let btn_payment = document.getElementById('bayarsbmt'); - console.log(btn_payment,rad_payment); -} +// console.log(btn_payment,rad_payment); +// } let checked_rad = () =>{ - let rad_payment = document.getElementById('radpembayaran'); + const radios = document.querySelectorAll('input[name="radpembayaran"]'); + // let rad_payment = document.getElementById('radpembayaran'); + let btn_payment = document.getElementById('bayarsbmt'); - if(rad_payment.checked){ - console.log('checked'); + if(radios.checked){ btn_payment.disabled = false; }else{ - console.log('not-checked'); btn_payment.disabled = true; } } -document.addEventListener('DOMContentLoaded', function () { - console.log('Document is fully loaded and parsed.'); - // Perform your actions here -}); \ No newline at end of file +const radios = document.querySelectorAll('input[name="radpembayaran"]'); + +radios.forEach((radio) => { + radio.addEventListener('change', function () { + let btn_payment = document.getElementById('bayarsbmt'); + let content1 = document.getElementById('divpkb'); + let content2 = document.getElementById('divkopkb'); + + if (this.checked) { + if(this.value == 'kopkb'){ + content1.classList.add('blurred'); + content2.classList.remove('blurred'); + btn_payment.disabled = false; + }else{ + content2.classList.add('blurred'); + content1.classList.remove('blurred'); + btn_payment.disabled = false; + } + } + + }); + // document.getElementById('radpembayaran').addEventListener('change', function () { + // const toggle = this.value; + // console.log(toggle); + // const content = document.getElementById(toggle); + + // console.log(dataToggleValue); + // if (this.checked) { + // content.classList.add('blurred'); + // } else { + // content.classList.remove('blurred'); + // } + // }); +}); + diff --git a/resources/views/auth/pertama-kali/firsttime.blade.php b/resources/views/auth/pertama-kali/firsttime.blade.php index bb6df13..51f88eb 100644 --- a/resources/views/auth/pertama-kali/firsttime.blade.php +++ b/resources/views/auth/pertama-kali/firsttime.blade.php @@ -181,7 +181,7 @@ - + {{-- --}} +{{-- --}} +{{-- --}} - + {{-- --}} From 0a1e8dc52389631eccd2e1b65ae1a6a5ddb51c1f Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Fri, 6 Dec 2024 21:22:23 +0800 Subject: [PATCH 05/28] addded companystatus --- app/Http/Controllers/BayaranController.php | 3 +- .../Controllers/InformationController.php | 51 +++++++++++++++---- app/Http/Requests/PaymentRequest.php | 9 ++++ app/Models/CompanyStatus.php | 11 ++++ app/Providers/AppServiceProvider.php | 10 ++++ config/api-lelong.php | 3 +- config/api.php | 3 +- public/js/miscellaneous/cart.js | 18 ------- resources/views/includes/home.blade.php | 4 +- 9 files changed, 79 insertions(+), 33 deletions(-) create mode 100644 app/Models/CompanyStatus.php diff --git a/app/Http/Controllers/BayaranController.php b/app/Http/Controllers/BayaranController.php index 6c4557e..613a2f4 100644 --- a/app/Http/Controllers/BayaranController.php +++ b/app/Http/Controllers/BayaranController.php @@ -19,7 +19,8 @@ class BayaranController extends Controller public function PembayaranAction(PaymentRequest $request) { $request->validated(); - + dd($request->all()); + dd($request->getPembiayaanFromNorujukan()); $arraybayar = $this->setUpahTawarruq($request->getPembiayaanFromNorujukan()); return view('includes.bayaran.pembayaransag', compact('arraybayar')); diff --git a/app/Http/Controllers/InformationController.php b/app/Http/Controllers/InformationController.php index ba8b16a..4647564 100644 --- a/app/Http/Controllers/InformationController.php +++ b/app/Http/Controllers/InformationController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Models\CompanyStatus; use App\Models\LelongBid; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -30,17 +31,28 @@ class InformationController extends Controller { $auth_user = Auth::User(); - $CustomerInfo = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') .'/portal/customer/info',['ic' => $auth_user['icno']])->json(); + $customer_pkb = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') .'/portal/customer/info',['ic' => $auth_user['icno']])->json(); + $customer_koop = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url_koop') .'/portal/customer/info',['ic' => $auth_user['icno']])->json(); $pembiayaansemasa = []; - if(isset($CustomerInfo['gadai'])) - { - $pembiayaansemasa = $CustomerInfo['gadai']; + if(isset($customer_pkb['gadai'])){ + $pembiayaansemasa = array_map(function ($pkb) { + $pkb['tag_syarikat'] = CompanyStatus::COM_PKB; + return $pkb; + }, $customer_pkb['gadai']); } - if(isset($CustomerInfo['lelong'])){ - if(sizeof($CustomerInfo['lelong']) > 0){ - foreach($CustomerInfo['lelong'] as $index=>$lelong){ + if(isset($customer_koop['gadai'])){ + $array_koop = array_map(function ($koop) { + $koop['tag_syarikat'] = CompanyStatus::COM_KOOPPKB; + return $koop; + }, $customer_pkb['gadai']); + $pembiayaansemasa = array_merge($pembiayaansemasa,$array_koop); + } + + if(isset($customer_pkb['lelong'])){ + if(sizeof($customer_pkb['lelong']) > 0){ + foreach($customer_pkb['lelong'] as $index=>$lelong){ $array_lelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api-lelong.url') . '/api/portalApi',['norujukan' => $lelong['norujukan']])->json(); if($array_lelong === null){ @@ -48,13 +60,32 @@ class InformationController extends Controller } if($array_lelong['lelong'] !== null){ - $CustomerInfo['lelong'][$index] = collect($lelong)->merge($array_lelong['lelong'])->toArray(); + $customer_pkb['lelong'][$index] = collect($lelong)->merge($array_lelong['lelong'])->toArray(); } } - $pembiayaansemasa = collect($pembiayaansemasa)->merge($CustomerInfo['lelong']); - $pembiayaansemasa = $pembiayaansemasa->toArray(); + $pembiayaansemasa = collect($pembiayaansemasa)->merge($customer_pkb['lelong']); + $pembiayaansemasa = $pembiayaansemasa->toArray(); } } + + if(isset($customer_koop['lelong'])){ + if(sizeof($customer_koop['lelong']) > 0){ + foreach($customer_koop['lelong'] as $index=>$lelong){ + $array_lelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api-lelong.url_koop') . '/api/portalApi',['norujukan' => $lelong['norujukan']])->json(); + + if($array_lelong === null){ + continue; + } + + if($array_lelong['lelong'] !== null){ + $customer_koop['lelong'][$index] = collect($lelong)->merge($array_lelong['lelong'])->toArray(); + } + } + $pembiayaansemasa = collect($pembiayaansemasa)->merge($customer_koop['lelong']); + $pembiayaansemasa = $pembiayaansemasa->toArray(); + } + } + return response()->json($pembiayaansemasa,200); // return view('includes.information.pembiayaanaktif',compact('pembiayaansemasa')); } diff --git a/app/Http/Requests/PaymentRequest.php b/app/Http/Requests/PaymentRequest.php index ff4fed0..9638f70 100644 --- a/app/Http/Requests/PaymentRequest.php +++ b/app/Http/Requests/PaymentRequest.php @@ -54,6 +54,15 @@ class PaymentRequest extends FormRequest public function getPembiayaanFromNorujukan() { $norujukanList = json_decode($this->totalSagInCartInput); + + dd($norujukanList,$this->test); + + + // $list_pkb = array_filter($fn($x) => ); + // $list_koop = array_filter($fn($x) => ); + + $pkb = array_map(fn($x) => Http::arrahn()->get('/api/gadai/norujukan/' . $x)->json()[0][0],$norujukanList); + $koop = array_map(fn($x) => Http::arrahn()->get('/api/gadai/norujukan/' . $x)->json()[0][0],$norujukanList); return array_map(fn($x) => Http::arrahn()->get('/api/gadai/norujukan/' . $x)->json()[0][0], $norujukanList); } diff --git a/app/Models/CompanyStatus.php b/app/Models/CompanyStatus.php new file mode 100644 index 0000000..ad1d728 --- /dev/null +++ b/app/Models/CompanyStatus.php @@ -0,0 +1,11 @@ + config('app.api_verify')])->baseUrl(config('api.url')); }); + + Http::macro('arrahn_koop', function () { + return Http::withOptions(['verify' => config('app.api_verify')])->baseUrl(config('api.url_koop')); + }); PendingRequest::macro('arrahn', function () { $this->options['verify'] = config('app.api_verify'); $this->baseUrl(config('api.url')); return $this; }); + + PendingRequest::macro('arrahn_koop', function () { + $this->options['verify'] = config('app.api_verify'); + $this->baseUrl(config('api.url_koop')); + return $this; + }); } } diff --git a/config/api-lelong.php b/config/api-lelong.php index 6114358..6ee436d 100644 --- a/config/api-lelong.php +++ b/config/api-lelong.php @@ -1,4 +1,5 @@ env('API_LELONG_URL', 'https://niklah.arrahn.com.my') + 'url' => env('API_LELONG_URL', 'https://niklah.arrahn.com.my'), + 'url_koop' => env('API_LELONG_URL_KOOP', 'https://niklah.arrahn.com.my') ]; diff --git a/config/api.php b/config/api.php index e8ea7a3..39b8ad4 100644 --- a/config/api.php +++ b/config/api.php @@ -1,4 +1,5 @@ env('API_URL') + 'url' => env('API_URL','http://localhost:8000'), + 'url_koop' => env('API_URL_KOOP','http://localhost:8000') ]; \ No newline at end of file diff --git a/public/js/miscellaneous/cart.js b/public/js/miscellaneous/cart.js index 03f28c6..d17232e 100644 --- a/public/js/miscellaneous/cart.js +++ b/public/js/miscellaneous/cart.js @@ -1,9 +1,3 @@ -// const test = () =>{ -// let btn_payment = document.getElementById('bayarsbmt'); - -// console.log(btn_payment,rad_payment); -// } - let checked_rad = () =>{ const radios = document.querySelectorAll('input[name="radpembayaran"]'); // let rad_payment = document.getElementById('radpembayaran'); @@ -37,17 +31,5 @@ radios.forEach((radio) => { } }); - // document.getElementById('radpembayaran').addEventListener('change', function () { - // const toggle = this.value; - // console.log(toggle); - // const content = document.getElementById(toggle); - - // console.log(dataToggleValue); - // if (this.checked) { - // content.classList.add('blurred'); - // } else { - // content.classList.remove('blurred'); - // } - // }); }); diff --git a/resources/views/includes/home.blade.php b/resources/views/includes/home.blade.php index e03f792..68eb105 100644 --- a/resources/views/includes/home.blade.php +++ b/resources/views/includes/home.blade.php @@ -137,13 +137,13 @@ }); let totalSagInCart = []; - + let totaltagSyarikat = []; let updateSagInCart = function(norujukan){ let isNorujukanIsAlreadyInCart = totalSagInCart.includes(norujukan); if(isNorujukanIsAlreadyInCart){ - totalSagInCart = totalSagInCart.filter(x => x != norujukan); + totalSagInCart = totalSagInCart.filter(x => x != norujukan); } if(! isNorujukanIsAlreadyInCart){ From 4501449bb1af85cbed8ce4c0ccbebdb1c433b182 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Sun, 8 Dec 2024 00:44:38 +0800 Subject: [PATCH 06/28] added personal_carts and put dynamic client --- app/Http/Controllers/BayaranController.php | 73 +++++++++++++++++-- app/Http/Requests/PaymentRequest.php | 28 +++++-- app/Models/PersonalCarts.php | 35 +++++++++ app/Services/BillplzService.php | 52 +++++++++---- config/services.php | 10 ++- .../2024_12_07_012607_create_carts_table.php | 40 ++++++++++ public/js/miscellaneous/cart.js | 22 +++++- .../includes/bayaran/pembayaransag.blade.php | 31 +++----- resources/views/includes/home.blade.php | 60 +++++++++++++-- .../partials/table-pembiayaan.blade.php | 2 +- routes/web.php | 2 + 11 files changed, 296 insertions(+), 59 deletions(-) create mode 100644 app/Models/PersonalCarts.php create mode 100644 database/migrations/2024_12_07_012607_create_carts_table.php diff --git a/app/Http/Controllers/BayaranController.php b/app/Http/Controllers/BayaranController.php index 613a2f4..d951121 100644 --- a/app/Http/Controllers/BayaranController.php +++ b/app/Http/Controllers/BayaranController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers; use App\Http\Requests\PaymentRequest; +use App\Models\CompanyStatus; +use App\Models\PersonalCarts; use App\Models\TransactionOnlineStatus; use App\Services\BillplzService; use Carbon\Carbon; @@ -18,21 +20,57 @@ class BayaranController extends Controller { public function PembayaranAction(PaymentRequest $request) { + + $exist_carts = $this->checkCarts(); + $exist_carts = optional($exist_carts)->toArray(); + + if($exist_carts){ + /* Do Have Carts. */ + $list_pkb = json_decode($exist_carts['list_pkb'],true); + $list_koop = json_decode($exist_carts['list_koop'],true); + + if($exist_carts['status_pkb'] == 'PENDING') $list_pkb = ($list_pkb) ? $this->setUpahTawarruq($list_pkb) : []; else $list_pkb = []; + if($exist_carts['status_koop'] == 'PENDING') $list_koop = ($list_koop) ? $this->setUpahTawarruq($list_koop) : []; else $list_koop = []; + + }else{ + /* Doesn't Have Carts. First Timer */ + $request->validated(); $request->validated(); dd($request->all()); dd($request->getPembiayaanFromNorujukan()); - $arraybayar = $this->setUpahTawarruq($request->getPembiayaanFromNorujukan()); + $request->validated(); + dd($request->all()); + dd($request->getPembiayaanFromNorujukan()); + $arraybayar = $this->setUpahTawarruq($request->getPembiayaanFromNorujukan()); - return view('includes.bayaran.pembayaransag', compact('arraybayar')); + $list_pkb = array_filter(array_map(function ($x){ + return ($x['tag_syarikat'] == CompanyStatus::COM_PKB) ? $x : null; + },$arraybayar)); + + $list_koop = array_filter(array_map(function ($x){ + return ($x['tag_syarikat'] == CompanyStatus::COM_KOOPPKB) ? $x : null; + },$arraybayar)); + + $personal_carts = new PersonalCarts(); + $personal_carts->ic_no = Auth::user()->icno; + $personal_carts->list_koop = json_encode($list_koop); + $personal_carts->list_pkb = json_encode($list_pkb); + $personal_carts->status_pkb = ($list_pkb) ? 'PENDING' : 'NONE'; + $personal_carts->status_koop = ($list_koop) ? 'PENDING' : 'NONE'; + $personal_carts->user_id = Auth::user()->id; + $personal_carts->save(); + } + + return view('includes.bayaran.pembayaransag', compact('list_pkb','list_koop')); } public function PembayaranEngine(Request $request, BillplzService $billplzService) { ['email' => $customerEmail, 'notel' => $customerPhoneNumber, 'name' => $customerName, 'icno' => $customerIcno] = auth()->user()->toArray(); - + // dd($request->all()); $bayaranArrahn = array_filter($request->txtjenisbayaran, fn($x) => $x == 'arrahn'); $bayaranOthers = array_filter($request->txtjenisbayaran, fn($x) => $x != 'arrahn'); - + // dd('test'); $bayaranArrahnArray = array_map(function ($x) use ($customerName, $customerIcno, $request) { return [ 'customer_name' => $customerName, @@ -63,7 +101,8 @@ class BayaranController extends Controller return Money::MYR($sum())->add($billPlzTransactionFee); }; - $bill = $billplzService->createBill([$customerEmail, $customerPhoneNumber, $customerName, $getPaymentSum()]); + $company = strtoupper($request->txtcompany); + $bill = $billplzService->createBill([$customerEmail, $customerPhoneNumber, $customerName, $getPaymentSum()],$company); $isRecordTransactionSuccess = $this->recordTransaction($paymentArray, $bill); @@ -320,4 +359,28 @@ class BayaranController extends Controller return array_map($getUpahTawarruqPerPembiayaan, $pembiayaan); } + + public function checkCarts(){ + $exist_carts = PersonalCarts::where('ic_no', Auth::user()->icno) + ->where('user_id', Auth::user()->id) + ->where(function ($query) { + $query->where('status_pkb', 'PENDING') + ->orWhere('status_koop', 'PENDING'); + }) + ->first(); + + return $exist_carts; + } + + public function removeCarts(){ + $exist_carts = PersonalCarts::where('ic_no', Auth::user()->icno) + ->where('user_id', Auth::user()->id) + ->first(); + + if ($exist_carts) { + $exist_carts->delete(); + } + + return $exist_carts; + } } diff --git a/app/Http/Requests/PaymentRequest.php b/app/Http/Requests/PaymentRequest.php index 9638f70..76c830b 100644 --- a/app/Http/Requests/PaymentRequest.php +++ b/app/Http/Requests/PaymentRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests; use App\Http\Controllers\InformationController; +use App\Models\CompanyStatus; use App\Rules\PaymentRules\CawanganPermitUjrahPayment; use App\Rules\PaymentRules\NorujukanBukanFasa2; use App\Rules\PaymentRules\NorujukanContractNotExceed12Month; @@ -54,17 +55,28 @@ class PaymentRequest extends FormRequest public function getPembiayaanFromNorujukan() { $norujukanList = json_decode($this->totalSagInCartInput); - - dd($norujukanList,$this->test); + $syarikatList = json_decode($this->listSyarikatinCartInput); + $filterByStatus = function ($status) use ($norujukanList, $syarikatList) { + return array_filter( + array_map(function ($sag, $index) use ($syarikatList, $status) { + if (isset($syarikatList[$index]) && $syarikatList[$index] == $status) { + $HttpRequest = $status == CompanyStatus::COM_PKB ? Http::arrahn() : Http::arrahn_koop(); + $array_temp = $HttpRequest->get('/api/gadai/norujukan/' . $sag)->json()[0][0] ?? null; + $array_temp['tag_syarikat'] = $status; + return $array_temp; + } + return null; + }, $norujukanList, array_keys($norujukanList)) + ); + }; - // $list_pkb = array_filter($fn($x) => ); - // $list_koop = array_filter($fn($x) => ); + $list_pkb = $filterByStatus(CompanyStatus::COM_PKB); + $list_koop = $filterByStatus(CompanyStatus::COM_KOOPPKB); - $pkb = array_map(fn($x) => Http::arrahn()->get('/api/gadai/norujukan/' . $x)->json()[0][0],$norujukanList); - $koop = array_map(fn($x) => Http::arrahn()->get('/api/gadai/norujukan/' . $x)->json()[0][0],$norujukanList); - - return array_map(fn($x) => Http::arrahn()->get('/api/gadai/norujukan/' . $x)->json()[0][0], $norujukanList); + $array_merged_list = array_merge($list_pkb,$list_koop); + return $array_merged_list; + // return array_map(fn($x) => Http::arrahn()->get('/api/gadai/norujukan/' . $x)->json()[0][0], $norujukanList); } public function getPembiayaanAkanDilelong() diff --git a/app/Models/PersonalCarts.php b/app/Models/PersonalCarts.php new file mode 100644 index 0000000..5059d78 --- /dev/null +++ b/app/Models/PersonalCarts.php @@ -0,0 +1,35 @@ + 'array', + 'list_koop' => 'array', + ]; + + protected $guarded = [ + 'id', + 'ic_no', + 'list_pkb', + 'list_koop', + 'status_pkb', + 'status_koop', + 'user_id', + 'created_at', + 'updated_at' + ]; + + public $timestamps = true; +} diff --git a/app/Services/BillplzService.php b/app/Services/BillplzService.php index ae853f9..3aca74b 100644 --- a/app/Services/BillplzService.php +++ b/app/Services/BillplzService.php @@ -17,21 +17,9 @@ class BillplzService public function __construct() { - $appEnvironment = config('app.env'); - $billplzConfig = $appEnvironment == 'production' ? config('services.billplz.production') : config('services.billplz.sandbox'); - - $client = Client::make($billplzConfig['api_key'], $billplzConfig['x_signature']); - $client->useVersion('v4'); - - if ($appEnvironment != 'production') { - $client->useSandbox(); - } - - $this->callbackUrl = route('pay.callback'); - $this->redirectUrl = ['redirect_url' => route('pay.paymentStatus')]; - $this->paymentTitle = "Pembayaran Ansuran"; - $this->config = $billplzConfig; - $this->client = $client; + $this->setupBillplzClient(); + $this->setupUrls(); + $this->paymentTitle = config('services.billplz.paymentTitle'); } public function getCollections() @@ -39,8 +27,10 @@ class BillplzService return $this->client->collection()->all()->toArray(); } - public function createBill(array $data) + public function createBill(array $data,string $company = 'PKB') { + $this->setupBillplzClient($company); + $composed_data = [ $this->config['collection_id'], ...$data, @@ -252,4 +242,34 @@ class BillplzService { return array_map(fn($x) => $this->client->bill()->get($x)->toArray(), $billIds); } + + protected function setupBillplzClient($company = 'PKB') + { + $appEnvironment = config('app.env'); + + $billplzEnvironments = [ + 'PKB' => ($appEnvironment === 'production') ? config('services.billplz.production') : config('services.billplz.sandbox'), + 'KOPKB' => ($appEnvironment === 'production') ? config('services.billplz.production_kopkb') : config('services.billplz.sandbox_kopkb'), + ]; + + $billplzConfig = $appEnvironment === 'production' + ? ($billplzEnvironments[$company] ?? config('services.billplz.production')) + : ($billplzEnvironments[$company] ?? config('services.billplz.sandbox')); + + $client = Client::make($billplzConfig['api_key'], $billplzConfig['x_signature']); + $client->useVersion('v4'); + + if ($appEnvironment !== 'production') { + $client->useSandbox(); + } + + $this->config = $billplzConfig; + $this->client = $client; + } + + protected function setupUrls() + { + $this->callbackUrl = route('pay.callback'); + $this->redirectUrl = ['redirect_url' => route('pay.paymentStatus')]; + } } diff --git a/config/services.php b/config/services.php index 6995833..4af2e26 100644 --- a/config/services.php +++ b/config/services.php @@ -31,20 +31,26 @@ return [ ], 'billplz' => [ + 'paymentTitle' => 'Pembayaran Ansuran', 'production' => [ 'api_key' => env('BILLPLZ_PRODUCTION_API_KEY', 'f3e82fe1-a422-4660-97f0-65cc59ff6c47'), 'x_signature' => env('BILLPLZ_PRODUCTION_X_SIGNATURE', 'S-alZUbzmD2_TF3vmrRqgehQ'), 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', '5aosv2dg'), ], + 'production_kopkb' => [ + 'api_key' => env('BILLPLZ_PRODUCTION_API_KEY', 'f3e82fe1-a422-4660-97f0-65cc59ff6c47'), + 'x_signature' => env('BILLPLZ_PRODUCTION_X_SIGNATURE', 'S-alZUbzmD2_TF3vmrRqgehQ'), + 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', '5aosv2dg'), + ], 'sandbox' => [ 'api_key' => env('BILLPLZ_SANDBOX_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), 'x_signature' => env('BILLPLZ_SANDBOX_X_SIGNATURE', 'S-GWr7z03XjAhqPsFfu_H5nQ'), - 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', 'z0r4kjhi'), + 'collection_id' => env('BILLPLZ_SANDBOX_COLLECTION_ID', 'z0r4kjhi'), ], 'sandbox_kopkb' => [ 'api_key' => env('BILLPLZ_SANDBOX_KOPKB_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), 'x_signature' => env('BILLPLZ_SANDBOX_KOPKB_X_SIGNATURE', 'S-GWr7z03XjAhqPsFfu_H5nQ'), - 'collection_id' => env('BILLPLZ_PRODUCTION_KOPKB_COLLECTION_ID', 'z0r4kjhi'), + 'collection_id' => env('BILLPLZ_SANDBOX_KOPKB_COLLECTION_ID', 'z0r4kjhi'), ], ], diff --git a/database/migrations/2024_12_07_012607_create_carts_table.php b/database/migrations/2024_12_07_012607_create_carts_table.php new file mode 100644 index 0000000..3ee51e4 --- /dev/null +++ b/database/migrations/2024_12_07_012607_create_carts_table.php @@ -0,0 +1,40 @@ +id(); + $table->string('ic_no'); + $table->json('list_pkb'); + $table->json('list_koop'); + $table->enum('status_pkb', ['PENDING', 'PAID','NONE']); + $table->enum('status_koop', ['PENDING', 'PAID','NONE']); + $table->softDeletes(); + $table->unsignedBigInteger('user_id'); + $table->timestamps(); + + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('personal_carts'); + } +} diff --git a/public/js/miscellaneous/cart.js b/public/js/miscellaneous/cart.js index d17232e..c4bd78e 100644 --- a/public/js/miscellaneous/cart.js +++ b/public/js/miscellaneous/cart.js @@ -17,16 +17,36 @@ radios.forEach((radio) => { let btn_payment = document.getElementById('bayarsbmt'); let content1 = document.getElementById('divpkb'); let content2 = document.getElementById('divkopkb'); - + let whole_total = document.getElementById('spanjumlah'); + let inputs = document.querySelectorAll(`#div${this.value} input[type="number"]`); + let values = Array.from(inputs).map(input => parseFloat(input.value) || 0).reduce((sum,value) => sum + value, 0); + if (this.checked) { if(this.value == 'kopkb'){ + let inputsdisabled = document.querySelectorAll(`#divpkb input:not([type="radio"])`); + inputsdisabled.forEach(input => { + input.disabled = true; + }); + inputs.forEach(input =>{ + input.disabled = false; + }); content1.classList.add('blurred'); content2.classList.remove('blurred'); btn_payment.disabled = false; + whole_total.innerHTML = values + 1; + }else{ + let inputsdisabled = document.querySelectorAll(`#divkopkb input:not([type="radio"])`); + inputsdisabled.forEach(input => { + input.disabled = true; + }); + inputs.forEach(input =>{ + input.disabled = false; + }); content2.classList.add('blurred'); content1.classList.remove('blurred'); btn_payment.disabled = false; + whole_total.innerHTML = values + 1; } } diff --git a/resources/views/includes/bayaran/pembayaransag.blade.php b/resources/views/includes/bayaran/pembayaransag.blade.php index 42b858e..aabab50 100644 --- a/resources/views/includes/bayaran/pembayaransag.blade.php +++ b/resources/views/includes/bayaran/pembayaransag.blade.php @@ -34,6 +34,7 @@
+ @if($list_pkb)
@@ -56,7 +57,7 @@ @php $counter = 1;$jenisbayaran = 'tawarruq'; $totalupahasal = 1; $errorcount = 0; @endphp - @foreach($arraybayar as $index=>$bayar) + @foreach($list_pkb as $index=>$bayar) @if($bayar['hargajualan'] != '') @@ -94,6 +95,7 @@ + @@ -109,29 +111,13 @@
- {{--
-
- -
- -
- RM1.00 -
-
-
-
- -
- -
- RM{{ number_format($totalupahasal,2) }} -
-
--}} *Jangan biarkan kotak bayaran ditinggalkan kosong, Sila masukkan amaun!
+ @endif + @if($list_koop)
@@ -155,7 +141,7 @@ @php $counter = 1;$jenisbayaran = 'tawarruq'; $totalupahasal = 1; $errorcount = 0; @endphp - @foreach($arraybayar as $index=>$bayar) + @foreach($list_koop as $index=>$bayar) @if($bayar['hargajualan'] != '') @@ -193,6 +179,8 @@ + + @@ -212,6 +200,7 @@ *Jangan biarkan kotak bayaran ditinggalkan kosong, Sila masukkan amaun!
+ @endif
@@ -241,7 +230,7 @@
- RM{{ number_format($totalupahasal,2) }} + RM1.00
diff --git a/resources/views/includes/home.blade.php b/resources/views/includes/home.blade.php index 68eb105..36aeaa0 100644 --- a/resources/views/includes/home.blade.php +++ b/resources/views/includes/home.blade.php @@ -138,26 +138,32 @@ let totalSagInCart = []; let totaltagSyarikat = []; - let updateSagInCart = function(norujukan){ - + let updateSagInCart = function(norujukan,syarikat){ + console.log(norujukan,syarikat); let isNorujukanIsAlreadyInCart = totalSagInCart.includes(norujukan); if(isNorujukanIsAlreadyInCart){ + let index = totalSagInCart.indexOf(norujukan); totalSagInCart = totalSagInCart.filter(x => x != norujukan); - } + totaltagSyarikat.splice(index, 1); + } if(! isNorujukanIsAlreadyInCart){ totalSagInCart.push(norujukan); + totaltagSyarikat.push(syarikat); } + console.log("total:" + totalSagInCart); + console.log("totalsyarikat:" + totaltagSyarikat); }; // Add event listener to checkboxes to update total count customer wants to pay $('#main-table').on('input', 'input[type="checkbox"][name="chkboxsag[]"]', function(el) { let norujukan = el.target.dataset.norujukan; + let tagsyarikat = el.target.dataset.syarikat; let isNorujukanIsChecked = el.target.checked; - updateSagInCart(norujukan); + updateSagInCart(norujukan,tagsyarikat); document.getElementById('totalsag').innerHTML = totalSagInCart.length; }); @@ -172,7 +178,51 @@ totalSagInCartInput.value = JSON.stringify(totalSagInCart); event.target.appendChild(totalSagInCartInput); - event.target.submit(); + let listSyarikatinCartInput = document.createElement('input'); + listSyarikatinCartInput.type = 'hidden'; + listSyarikatinCartInput.name = 'listSyarikatinCartInput'; + listSyarikatinCartInput.value = JSON.stringify(totaltagSyarikat); + event.target.appendChild(listSyarikatinCartInput); + + let check_carts = fetch('/showcarts-available') + .then(response => { + console.log(response); + if (!response.ok) { + throw new Error('HTTP error ' + response.status); + } + return response.json(); + }) + .then(data => console.log(data)) + .catch(error => console.error(error)); + + if(check_carts){ + Swal.fire({ + title: "Troli Anda Masih Ada Lagi?", + showDenyButton: true, + showCancelButton: false, + confirmButtonText: "Pergi Ke Troli", + denyButtonText: `Buang Troli` + }).then((result) => { + /* Read more about isConfirmed, isDenied below */ + if (result.isDenied) { + let remove_carts = fetch('/deletecarts') + .then(response => { + console.log(response); + if (!response.ok) { + throw new Error('HTTP error ' + response.status); + } + return response.json(); + }) + .then(data => console.log(data)) + .catch(error => console.error(error)); + + } + event.target.submit(); + }); + console.log(check_carts); + }else{ + event.target.submit(); + } }); diff --git a/resources/views/includes/partials/table-pembiayaan.blade.php b/resources/views/includes/partials/table-pembiayaan.blade.php index c1af081..f82c398 100644 --- a/resources/views/includes/partials/table-pembiayaan.blade.php +++ b/resources/views/includes/partials/table-pembiayaan.blade.php @@ -16,7 +16,7 @@ disabled_payment ? 'disabled' : '' }} /> + data-syarikat="{{ $data->tag_syarikat }}" {{ $data->disabled_payment ? 'disabled' : '' }} /> diff --git a/routes/web.php b/routes/web.php index 3529cc4..29bd693 100644 --- a/routes/web.php +++ b/routes/web.php @@ -125,6 +125,8 @@ Route::get('/requesticfe', 'App\Http\Controllers\TacController@requestKadPengena Route::get('/requesttac', 'App\Http\Controllers\TacController@TACrequest')->name('requesttac'); Route::get('/requesttacfe', 'App\Http\Controllers\TacController@TACrequestfe')->name('requesttacfe'); +Route::get('/showcarts-available','App\Http\Controllers\BayaranController@checkCarts')->name('checkcarts'); +Route::get('/deletecarts','App\Http\Controllers\BayaranController@removeCarts')->name('removecarts'); Route::get('download/manualpengguna',['as'=>'miscellaneous.manualpengguna', function(){ if (Storage::disk('miscellaneous')->exists('Manual_Pengguna.pdf')) { From 09e0afbd845c2db59b0efc9cec766aea67374855 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Sun, 8 Dec 2024 22:00:52 +0800 Subject: [PATCH 07/28] added split of payment --- app/Http/Controllers/BayaranController.php | 67 +++++++++++++--------- app/Services/BillplzService.php | 36 ++++++++++-- config/services.php | 6 +- public/js/miscellaneous/cart.js | 7 ++- 4 files changed, 78 insertions(+), 38 deletions(-) diff --git a/app/Http/Controllers/BayaranController.php b/app/Http/Controllers/BayaranController.php index d951121..684a50d 100644 --- a/app/Http/Controllers/BayaranController.php +++ b/app/Http/Controllers/BayaranController.php @@ -15,9 +15,12 @@ use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Money\Money; use App\Services\OnlineTransactionLoggerService; +use Illuminate\Support\Facades\Session; class BayaranController extends Controller { + public $CallableHttp; + public function PembayaranAction(PaymentRequest $request) { @@ -34,13 +37,8 @@ class BayaranController extends Controller }else{ /* Doesn't Have Carts. First Timer */ - $request->validated(); - $request->validated(); - dd($request->all()); - dd($request->getPembiayaanFromNorujukan()); $request->validated(); - dd($request->all()); - dd($request->getPembiayaanFromNorujukan()); + $arraybayar = $this->setUpahTawarruq($request->getPembiayaanFromNorujukan()); $list_pkb = array_filter(array_map(function ($x){ @@ -67,10 +65,10 @@ class BayaranController extends Controller public function PembayaranEngine(Request $request, BillplzService $billplzService) { ['email' => $customerEmail, 'notel' => $customerPhoneNumber, 'name' => $customerName, 'icno' => $customerIcno] = auth()->user()->toArray(); - // dd($request->all()); + $bayaranArrahn = array_filter($request->txtjenisbayaran, fn($x) => $x == 'arrahn'); $bayaranOthers = array_filter($request->txtjenisbayaran, fn($x) => $x != 'arrahn'); - // dd('test'); + $bayaranArrahnArray = array_map(function ($x) use ($customerName, $customerIcno, $request) { return [ 'customer_name' => $customerName, @@ -103,8 +101,11 @@ class BayaranController extends Controller $company = strtoupper($request->txtcompany); $bill = $billplzService->createBill([$customerEmail, $customerPhoneNumber, $customerName, $getPaymentSum()],$company); + + Session::put('company', $company); + $this->serviceCallHttp($company); - $isRecordTransactionSuccess = $this->recordTransaction($paymentArray, $bill); + $isRecordTransactionSuccess = $this->recordTransaction($paymentArray, $bill,$company); if ($isRecordTransactionSuccess) { session([ @@ -116,12 +117,12 @@ class BayaranController extends Controller } } - public function recordTransaction($paymentArray, $bill) + public function recordTransaction($paymentArray, $bill,$company = 'PKB') { ['name' => $customerName, 'icno' => $customerIcno] = auth()->user()->toArray(); $getlatestNoSiri = function () { - $previous_siri = Http::arrahn()->get('/api/online/transaction')->json(); + $previous_siri = $this->CallableHttp->get('/api/online/transaction')->json(); if ($previous_siri) { return $previous_siri['nosiri'] + 1; } else { @@ -135,10 +136,13 @@ class BayaranController extends Controller return 'APKB' . $day . $month . $year . sprintf('%08d', $getlatestNoSiri()); }; + $serviceCallable = $company == 'PKB' + ? fn(Pool $pool) => $pool->arrahn() + : fn(Pool $pool) => $pool->arrahn_koop(); try { Http::pool( fn(Pool $pool) => collect($paymentArray)->map( - fn($payment) => $pool->arrahn()->post('/api/online/transaction', [ + fn($payment) => $serviceCallable($pool)->post('/api/online/transaction', [ 'nokp' => $customerIcno, 'reference_no' => $generateTransactionReferenceNumber(), 'nosiri' => $getlatestNoSiri(), @@ -162,7 +166,7 @@ class BayaranController extends Controller } try { - $response = Http::arrahn() + $response = $this->CallableHttp ->put('/api/transaction/online/tagportal', [ 'billplz_id' => $bill['id'], ]) @@ -182,11 +186,12 @@ class BayaranController extends Controller public function ResitBayaran(Request $request) { + $this->serviceCallHttp(Session::get('company')); $payment_details = $request->payment; $kpbaru = Auth::User()->icno; - $customer = Http::arrahn() + $customer = $this->CallableHttp ->get('/api/customers/' . $kpbaru) ->json(); $customer_details = $customer; @@ -195,16 +200,16 @@ class BayaranController extends Controller $current = new Carbon(); $date = $current->toDateTimeString(); - $cawangan_info = Http::arrahn() + $cawangan_info = $this->CallableHttp ->get('/api/cawangan/' . $payment_details['kodcaw']) ->json(); - $cawangan = Http::arrahn() + $cawangan = $this->CallableHttp ->get('/api/cawangan/detail/' . $payment_details['kodcaw']) ->json(); $cawangan_detail = $cawangan[0]; $nama_cawangan = $cawangan_info['details_caw']; - $gadai_details = Http::arrahn() + $gadai_details = $this->CallableHttp ->get('/api/gadai/norujukan/' . $payment_details['norujukan']) ->json(); $gadai = $gadai_details[0][0]; @@ -219,7 +224,7 @@ class BayaranController extends Controller $isBillUnpaid = $data['paid'] !== true; if ($isBillUnpaid) { - Http::arrahn()->put('/api/online/transaction', [ + $this->CallableHttp->put('/api/online/transaction', [ 'billplz_id' => $data['id'], 'status' => 'UNSUCCESSFUL', 'paid_at' => null, @@ -228,7 +233,7 @@ class BayaranController extends Controller return response(200); } - Http::arrahn()->put('/api/online/transaction', [ + $this->CallableHttp->put('/api/online/transaction', [ 'billplz_id' => $data['id'], 'status' => 'PAID', 'paid_at' => $data['paid_at']->format('Y-m-d H:i:s'), @@ -240,17 +245,17 @@ class BayaranController extends Controller public function response(Request $request, BillplzService $billplzService) { $data = $billplzService->redirect($request->toArray()); - + $this->serviceCallHttp($billplzService->company); $isBillUnpaid = $data['paid'] !== true; if ($isBillUnpaid) { - Http::arrahn()->put('/api/online/transaction', [ + $this->CallableHttp->put('/api/online/transaction', [ 'billplz_id' => $data['id'], 'status' => 'UNSUCCESSFUL', 'paid_at' => null, ]); - $transactionOnline = Http::arrahn() + $transactionOnline = $this->CallableHttp ->get('/api/transaction/online/login', [ 'billplz_id' => $data['id'], ]) @@ -259,13 +264,13 @@ class BayaranController extends Controller return redirect()->route('pay.failed'); } - Http::arrahn()->put('/api/online/transaction', [ + $this->CallableHttp->put('/api/online/transaction', [ 'billplz_id' => $data['id'], 'status' => 'PAID', 'paid_at' => $data['paid_at']->format('Y-m-d H:i:s'), ]); - $transactionOnline = Http::arrahn() + $transactionOnline = $this->CallableHttp ->get('/api/transaction/online/login', [ 'billplz_id' => $data['id'], ]) @@ -278,17 +283,18 @@ class BayaranController extends Controller public function successPayment(Request $request) { + $this->serviceCallHttp(Session::get('company')); $transactionOnline = $request->transactionOnline; $arraygadai = array_map( - fn($x) => Http::arrahn() + fn($x) => $this->CallableHttp ->get('/api/gadai/norujukan/' . $x['norujukan']) ->json()[0][0], $transactionOnline, ); $arraycawangan = array_map( - fn($x) => Http::arrahn() + fn($x) => $this->CallableHttp ->get('/api/cawangan/detail/' . $x['kodcaw']) ->json()[0], $transactionOnline, @@ -310,7 +316,7 @@ class BayaranController extends Controller $auth_user = Auth::user(); - $belum_tebus = Http::arrahn() + $belum_tebus = $this->CallableHttp ->get('/api/customers/' . $auth_user['icno'] . '/gadai/' . 'belum_tebus') ->json(); @@ -383,4 +389,11 @@ class BayaranController extends Controller return $exist_carts; } + + public function serviceCallHttp($company){ + $this->CallableHttp = $company == 'PKB' + ? Http::arrahn() + : Http::arrahn_koop(); + + } } diff --git a/app/Services/BillplzService.php b/app/Services/BillplzService.php index 3aca74b..5010902 100644 --- a/app/Services/BillplzService.php +++ b/app/Services/BillplzService.php @@ -6,6 +6,8 @@ use App\Models\TransactionOnlineStatus; use Billplz\Client; use Carbon\Carbon; use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Session; class BillplzService { @@ -14,10 +16,12 @@ class BillplzService public $callbackUrl; public $paymentTitle; public $redirectUrl; + public $company; - public function __construct() + public function __construct(string $company) { - $this->setupBillplzClient(); + $this->company = $company; + $this->setupBillplzClient($company); $this->setupUrls(); $this->paymentTitle = config('services.billplz.paymentTitle'); } @@ -27,9 +31,12 @@ class BillplzService return $this->client->collection()->all()->toArray(); } - public function createBill(array $data,string $company = 'PKB') + public function createBill(array $data,string $company) { + Session::put('company',$company); + $this->setCompany($company); $this->setupBillplzClient($company); + // dd($company,$this->config); $composed_data = [ $this->config['collection_id'], @@ -67,6 +74,8 @@ class BillplzService public function redirect($request) { + $this->setCompany(Session::get('company')); + $this->setupBillplzClient($this->company); try{ $response = $this->client->bill()->redirect($request); @@ -84,6 +93,8 @@ class BillplzService public function webhook($request) { + $this->setCompany(Session::get('company')); + $this->setupBillplzClient($this->company); try { $response = $this->client->webhook($request); @@ -243,7 +254,7 @@ class BillplzService return array_map(fn($x) => $this->client->bill()->get($x)->toArray(), $billIds); } - protected function setupBillplzClient($company = 'PKB') + protected function setupBillplzClient($company) { $appEnvironment = config('app.env'); @@ -255,8 +266,10 @@ class BillplzService $billplzConfig = $appEnvironment === 'production' ? ($billplzEnvironments[$company] ?? config('services.billplz.production')) : ($billplzEnvironments[$company] ?? config('services.billplz.sandbox')); - - $client = Client::make($billplzConfig['api_key'], $billplzConfig['x_signature']); + + Log::info($company); + Log::info($this->isBase64($billplzConfig['x_signature'])); + $client = Client::make($billplzConfig['api_key'], ($this->isBase64($billplzConfig['x_signature'])) ? $billplzConfig['x_signature'] : base64_encode($billplzConfig['x_signature'])); $client->useVersion('v4'); if ($appEnvironment !== 'production') { @@ -272,4 +285,15 @@ class BillplzService $this->callbackUrl = route('pay.callback'); $this->redirectUrl = ['redirect_url' => route('pay.paymentStatus')]; } + + protected function setCompany($company = 'PKB'){ + $this->company = $company; + } + + protected function isBase64($string) { + if (preg_match('/^[A-Za-z0-9+\/=]+$/', $string)) { + return base64_encode(base64_decode($string, true)) === $string; + } + return false; + } } diff --git a/config/services.php b/config/services.php index 4af2e26..95874ea 100644 --- a/config/services.php +++ b/config/services.php @@ -48,9 +48,9 @@ return [ 'collection_id' => env('BILLPLZ_SANDBOX_COLLECTION_ID', 'z0r4kjhi'), ], 'sandbox_kopkb' => [ - 'api_key' => env('BILLPLZ_SANDBOX_KOPKB_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), - 'x_signature' => env('BILLPLZ_SANDBOX_KOPKB_X_SIGNATURE', 'S-GWr7z03XjAhqPsFfu_H5nQ'), - 'collection_id' => env('BILLPLZ_SANDBOX_KOPKB_COLLECTION_ID', 'z0r4kjhi'), + 'api_key' => env('BILLPLZ_SANDBOX_KOPKB_API_KEY', '4b9218fd-04fb-4338-a067-982e6730d160'), + 'x_signature' => env('BILLPLZ_SANDBOX_KOPKB_X_SIGNATURE', '0ac6e5438cf729754bb819860ed7de6d87d79b0d183212bf10581fca39a4c2d992697b605a706118032af37d31a85fed6637ff1233c56e6d2421bc22cca9d710'), + 'collection_id' => env('BILLPLZ_SANDBOX_KOPKB_COLLECTION_ID', 'uae40muk'), ], ], diff --git a/public/js/miscellaneous/cart.js b/public/js/miscellaneous/cart.js index c4bd78e..3aef8e0 100644 --- a/public/js/miscellaneous/cart.js +++ b/public/js/miscellaneous/cart.js @@ -24,10 +24,11 @@ radios.forEach((radio) => { if (this.checked) { if(this.value == 'kopkb'){ let inputsdisabled = document.querySelectorAll(`#divpkb input:not([type="radio"])`); + let inputenabled = document.querySelectorAll(`#divkopkb input`); inputsdisabled.forEach(input => { input.disabled = true; }); - inputs.forEach(input =>{ + inputenabled.forEach(input =>{ input.disabled = false; }); content1.classList.add('blurred'); @@ -37,10 +38,12 @@ radios.forEach((radio) => { }else{ let inputsdisabled = document.querySelectorAll(`#divkopkb input:not([type="radio"])`); + let inputenabled = document.querySelectorAll(`#divpkb input`); + inputsdisabled.forEach(input => { input.disabled = true; }); - inputs.forEach(input =>{ + inputenabled.forEach(input =>{ input.disabled = false; }); content2.classList.add('blurred'); From 6919f75abf5beeff188cd492f2369c7dbad99431 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Mon, 9 Dec 2024 00:21:04 +0800 Subject: [PATCH 08/28] added cursor pointer into trolley at homepage that redirect to trolley page --- app/Http/Controllers/BayaranController.php | 47 +++++++++++++++++-- app/Http/Requests/PaymentRequest.php | 4 ++ app/Services/BillplzService.php | 16 +------ .../views/includes/main/navigation.blade.php | 24 +++++++++- .../pembayaran/result/berjayaportal.blade.php | 38 ++++++++++++++- 5 files changed, 109 insertions(+), 20 deletions(-) diff --git a/app/Http/Controllers/BayaranController.php b/app/Http/Controllers/BayaranController.php index 684a50d..69e0fcd 100644 --- a/app/Http/Controllers/BayaranController.php +++ b/app/Http/Controllers/BayaranController.php @@ -62,7 +62,7 @@ class BayaranController extends Controller return view('includes.bayaran.pembayaransag', compact('list_pkb','list_koop')); } - public function PembayaranEngine(Request $request, BillplzService $billplzService) + public function PembayaranEngine(Request $request) { ['email' => $customerEmail, 'notel' => $customerPhoneNumber, 'name' => $customerName, 'icno' => $customerIcno] = auth()->user()->toArray(); @@ -100,6 +100,7 @@ class BayaranController extends Controller }; $company = strtoupper($request->txtcompany); + $billplzService = new BillplzService($company); $bill = $billplzService->createBill([$customerEmail, $customerPhoneNumber, $customerName, $getPaymentSum()],$company); Session::put('company', $company); @@ -217,8 +218,9 @@ class BayaranController extends Controller return view('pembayaran.resit.resitportal', compact('customer_details', 'payment_details', 'cawangan_detail', 'nama_cawangan', 'gadai')); } - public function callback(Request $request, BillplzService $billplzService) + public function callback(Request $request) { + $billplzService = new BillplzService(Session::get('company')); $data = $billplzService->webhook($request->toArray()); $isBillUnpaid = $data['paid'] !== true; @@ -239,11 +241,25 @@ class BayaranController extends Controller 'paid_at' => $data['paid_at']->format('Y-m-d H:i:s'), ]); + $column_updated = (Session::get('company') == 'PKB') ? 'status_pkb' : 'status_koop'; + $value_paid = 'PAID'; + + $exist_carts = PersonalCarts::where('ic_no', Auth::user()->icno) + ->where('user_id', Auth::user()->id) + ->where(function ($query) { + $query->where('status_pkb', 'PENDING') + ->orWhere('status_koop', 'PENDING'); + }) + ->update([ + $column_updated => $value_paid, + ]); + return response(200); } - public function response(Request $request, BillplzService $billplzService) + public function response(Request $request) { + $billplzService = new BillplzService(Session::get('company')); $data = $billplzService->redirect($request->toArray()); $this->serviceCallHttp($billplzService->company); $isBillUnpaid = $data['paid'] !== true; @@ -270,6 +286,19 @@ class BayaranController extends Controller 'paid_at' => $data['paid_at']->format('Y-m-d H:i:s'), ]); + $column_updated = (Session::get('company') == 'PKB') ? 'status_pkb' : 'status_koop'; + $value_paid = 'PAID'; + + $exist_carts = PersonalCarts::where('ic_no', Auth::user()->icno) + ->where('user_id', Auth::user()->id) + ->where(function ($query) { + $query->where('status_pkb', 'PENDING') + ->orWhere('status_koop', 'PENDING'); + }) + ->update([ + $column_updated => $value_paid, + ]); + $transactionOnline = $this->CallableHttp ->get('/api/transaction/online/login', [ 'billplz_id' => $data['id'], @@ -300,7 +329,17 @@ class BayaranController extends Controller $transactionOnline, ); - return view('pembayaran.result.berjayaportal', compact('transactionOnline', 'arraycawangan', 'arraygadai')); + $exist_carts = PersonalCarts::where('ic_no', Auth::user()->icno) + ->where('user_id', Auth::user()->id) + ->where(function ($query) { + $query->where('status_pkb', 'PENDING') + ->orWhere('status_koop', 'PENDING'); + }) + ->first(); + + $exist_carts = optional($exist_carts)->toArray(); + + return view('pembayaran.result.berjayaportal', compact('transactionOnline', 'arraycawangan', 'arraygadai','exist_carts')); } public function failedPayment() diff --git a/app/Http/Requests/PaymentRequest.php b/app/Http/Requests/PaymentRequest.php index 76c830b..a0cf18a 100644 --- a/app/Http/Requests/PaymentRequest.php +++ b/app/Http/Requests/PaymentRequest.php @@ -54,6 +54,10 @@ class PaymentRequest extends FormRequest public function getPembiayaanFromNorujukan() { + if(null !== $this->input('redirect_trolley') && $this->input('redirect_trolley') == 'trolley'){ + return []; + } + $norujukanList = json_decode($this->totalSagInCartInput); $syarikatList = json_decode($this->listSyarikatinCartInput); diff --git a/app/Services/BillplzService.php b/app/Services/BillplzService.php index 5010902..ebd64d0 100644 --- a/app/Services/BillplzService.php +++ b/app/Services/BillplzService.php @@ -33,10 +33,6 @@ class BillplzService public function createBill(array $data,string $company) { - Session::put('company',$company); - $this->setCompany($company); - $this->setupBillplzClient($company); - // dd($company,$this->config); $composed_data = [ $this->config['collection_id'], @@ -74,8 +70,6 @@ class BillplzService public function redirect($request) { - $this->setCompany(Session::get('company')); - $this->setupBillplzClient($this->company); try{ $response = $this->client->bill()->redirect($request); @@ -93,8 +87,8 @@ class BillplzService public function webhook($request) { - $this->setCompany(Session::get('company')); - $this->setupBillplzClient($this->company); + // $this->setCompany(Session::get('company')); + // $this->setupBillplzClient($this->company); try { $response = $this->client->webhook($request); @@ -267,8 +261,6 @@ class BillplzService ? ($billplzEnvironments[$company] ?? config('services.billplz.production')) : ($billplzEnvironments[$company] ?? config('services.billplz.sandbox')); - Log::info($company); - Log::info($this->isBase64($billplzConfig['x_signature'])); $client = Client::make($billplzConfig['api_key'], ($this->isBase64($billplzConfig['x_signature'])) ? $billplzConfig['x_signature'] : base64_encode($billplzConfig['x_signature'])); $client->useVersion('v4'); @@ -285,10 +277,6 @@ class BillplzService $this->callbackUrl = route('pay.callback'); $this->redirectUrl = ['redirect_url' => route('pay.paymentStatus')]; } - - protected function setCompany($company = 'PKB'){ - $this->company = $company; - } protected function isBase64($string) { if (preg_match('/^[A-Za-z0-9+\/=]+$/', $string)) { diff --git a/resources/views/includes/main/navigation.blade.php b/resources/views/includes/main/navigation.blade.php index 3ebd3c2..c6609d3 100644 --- a/resources/views/includes/main/navigation.blade.php +++ b/resources/views/includes/main/navigation.blade.php @@ -109,10 +109,32 @@
--> + + +
@@ -111,30 +114,8 @@
-
-
+
+
@if($list_pkb)
@@ -203,7 +223,7 @@ @endif
-
@@ -507,6 +561,7 @@ $("#spanbayaranarrahn").text(sumarrahn.toFixed(2)); $("#spanbayarantawarruq").text(sumtawarruq.toFixed(2)); $('#spanjumlah').text(formatter.format(sum + 1)); + $('#spanjumlah-phone').text(formatter.format(sum + 1)); } if (document.addEventListener) { From 4e4c9ecaddaa67a136fd74c82751b3126719c2c0 Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Wed, 11 Dec 2024 07:31:47 +0800 Subject: [PATCH 12/28] buat pembayaran untuk phone boleh letak --- app/Http/Controllers/BayaranController.php | 14 ++- public/js/miscellaneous/cart.js | 21 +++++ public/js/miscellaneous/navigation-trolley.js | 19 ++-- .../includes/bayaran/pembayaransag.blade.php | 93 ++++++++----------- resources/views/includes/home.blade.php | 40 ++++---- .../views/includes/main/navigation.blade.php | 2 +- routes/web.php | 2 +- 7 files changed, 109 insertions(+), 82 deletions(-) diff --git a/app/Http/Controllers/BayaranController.php b/app/Http/Controllers/BayaranController.php index 69e0fcd..9b15fe2 100644 --- a/app/Http/Controllers/BayaranController.php +++ b/app/Http/Controllers/BayaranController.php @@ -417,6 +417,18 @@ class BayaranController extends Controller return $exist_carts; } + public function UserCheckCarts(){ + $exist_carts = PersonalCarts::where('ic_no', Auth::user()->icno) + ->where('user_id', Auth::user()->id) + ->where(function ($query) { + $query->where('status_pkb', 'PENDING') + ->orWhere('status_koop', 'PENDING'); + }) + ->first(); + + return response()->json($exist_carts); + } + public function removeCarts(){ $exist_carts = PersonalCarts::where('ic_no', Auth::user()->icno) ->where('user_id', Auth::user()->id) @@ -426,7 +438,7 @@ class BayaranController extends Controller $exist_carts->delete(); } - return $exist_carts; + return response()->json($exist_carts); } public function serviceCallHttp($company){ diff --git a/public/js/miscellaneous/cart.js b/public/js/miscellaneous/cart.js index 6123a7b..ee6df57 100644 --- a/public/js/miscellaneous/cart.js +++ b/public/js/miscellaneous/cart.js @@ -66,3 +66,24 @@ radios.forEach((radio) => { }); }); +let deleteCarts = () => { + fetch('/deletecarts') + .then(response => { + if (!response.ok) { + throw new Error('HTTP error ' + response.status); + } + return response.json(); + }) + .then(data => { + console.log(data); + if (data) { + redirect_home(); + } + }) + .catch(error => console.error(error)); +} + +let redirect_home = () => { + window.location.href = redirect_home_var; +} + diff --git a/public/js/miscellaneous/navigation-trolley.js b/public/js/miscellaneous/navigation-trolley.js index c4914e7..6d951eb 100644 --- a/public/js/miscellaneous/navigation-trolley.js +++ b/public/js/miscellaneous/navigation-trolley.js @@ -1,6 +1,5 @@ async function fetchCartCount() { try { - // Replace with your API endpoint const response = await fetch('/showcarts-available'); if (!response.ok) { @@ -8,35 +7,39 @@ async function fetchCartCount() { } const data = await response.json(); - console.log(data.status_koop); let totalcount = 0; totalcount += (data.status_koop === 'PENDING') ? 1 : 0; totalcount += (data.status_pkb === 'PENDING') ? 1 : 0; - // Assuming the API returns a JSON object with a `count` property const cartCount = totalcount || 0; updateCartCount(cartCount); } catch (error) { console.error('Error fetching cart count:', error); - // Optionally, handle error (e.g., show default value or retry) updateCartCount(0); } } function updateCartCount(itemCount) { const cartCountElement = document.getElementById('cart-count'); + const ahrefRedirect = document.getElementById('a-redirect'); if (itemCount > 0) { - cartCountElement.textContent = itemCount; // Show the number of items - cartCountElement.classList.remove('d-none'); // Ensure it is visible + cartCountElement.textContent = itemCount; + cartCountElement.classList.remove('d-none'); } else { - cartCountElement.textContent = ''; // Clear the content - cartCountElement.classList.add('d-none'); // Hide the element if the cart is empty + cartCountElement.textContent = ''; + cartCountElement.classList.add('d-none'); + } } function redirectTrolley() { + const cartCountElement = document.getElementById('cart-count'); + if(cartCountElement.textContent == 0){ + return false; + } + let form = document.createElement('form'); form.method = 'POST'; form.action = routetrolley; diff --git a/resources/views/includes/bayaran/pembayaransag.blade.php b/resources/views/includes/bayaran/pembayaransag.blade.php index cd9e50f..046b600 100644 --- a/resources/views/includes/bayaran/pembayaransag.blade.php +++ b/resources/views/includes/bayaran/pembayaransag.blade.php @@ -36,6 +36,7 @@ } } + Bayar SAG | Portal Pelanggan
@@ -151,7 +152,7 @@
- +
@@ -264,7 +265,7 @@
- Batal  + Batal  @if($totalupahasal == 1.00 || $errorcount > 0) @@ -276,7 +277,7 @@
- + *sila klik bayar untuk transaksi bayaran berikutnya. diff --git a/resources/views/pembayaran/senaraibayaran.blade.php b/resources/views/pembayaran/senaraibayaran.blade.php index 52a41aa..5339445 100644 --- a/resources/views/pembayaran/senaraibayaran.blade.php +++ b/resources/views/pembayaran/senaraibayaran.blade.php @@ -190,7 +190,7 @@ } } - $koskeuntungan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/upahtawarruq/' . $bt['kodcaw'] . '/' . $bt['norujukan'])->json(); + $koskeuntungan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/upahtawarruq/' . $bt['kodcaw'] . '/' . $bt['norujukan'],['jeniskeuntungan' => ($bt['tagbaru'] == 1) ? 'onepercent' : 'asal'])->json(); $keuntungan_1bln = $bt['pinjaman'] * ($bt['kadarupah'] / 100); $ten_percent = floatval($bt['nilaimarhun']) * 0.1; $baki_pinjaman = floatval($bt['bakipjm']); From a982cb8c4d7ce52f845759c3b8d76d99a185550f Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Mon, 6 Jan 2025 21:44:25 +0800 Subject: [PATCH 17/28] added production code --- config/services.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/services.php b/config/services.php index 95874ea..3d1972a 100644 --- a/config/services.php +++ b/config/services.php @@ -38,9 +38,9 @@ return [ 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', '5aosv2dg'), ], 'production_kopkb' => [ - 'api_key' => env('BILLPLZ_PRODUCTION_API_KEY', 'f3e82fe1-a422-4660-97f0-65cc59ff6c47'), - 'x_signature' => env('BILLPLZ_PRODUCTION_X_SIGNATURE', 'S-alZUbzmD2_TF3vmrRqgehQ'), - 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', '5aosv2dg'), + 'api_key' => env('BILLPLZ_PRODUCTION_API_KEY', 'f4e099e5-88ca-4712-a01e-b7e1daf78ce2'), + 'x_signature' => env('BILLPLZ_PRODUCTION_X_SIGNATURE', 'S-OApBh3DIwelPcWPzlMLMeg'), + 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', 'do6x2mhg'), ], 'sandbox' => [ 'api_key' => env('BILLPLZ_SANDBOX_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), From ebba3846ef643a54781adec008c57c8a92d4da2c Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Mon, 6 Jan 2025 21:59:10 +0800 Subject: [PATCH 18/28] misspelling production_kopkb --- config/services.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/services.php b/config/services.php index 3d1972a..69082c7 100644 --- a/config/services.php +++ b/config/services.php @@ -38,9 +38,9 @@ return [ 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', '5aosv2dg'), ], 'production_kopkb' => [ - 'api_key' => env('BILLPLZ_PRODUCTION_API_KEY', 'f4e099e5-88ca-4712-a01e-b7e1daf78ce2'), - 'x_signature' => env('BILLPLZ_PRODUCTION_X_SIGNATURE', 'S-OApBh3DIwelPcWPzlMLMeg'), - 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', 'do6x2mhg'), + 'api_key' => env('BILLPLZ_PRODUCTION_KOPKB_API_KEY', 'f4e099e5-88ca-4712-a01e-b7e1daf78ce2'), + 'x_signature' => env('BILLPLZ_PRODUCTION_KOPKB_X_SIGNATURE', 'S-OApBh3DIwelPcWPzlMLMeg'), + 'collection_id' => env('BILLPLZ_PRODUCTION_KOPKB_COLLECTION_ID', 'do6x2mhg'), ], 'sandbox' => [ 'api_key' => env('BILLPLZ_SANDBOX_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), From 5d176e6b1601b4c2e9ed9a46f0ce83d4b4cbf025 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Tue, 7 Jan 2025 15:32:58 +0800 Subject: [PATCH 19/28] fix collection id --- config/services.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/services.php b/config/services.php index 69082c7..54b286b 100644 --- a/config/services.php +++ b/config/services.php @@ -40,7 +40,7 @@ return [ 'production_kopkb' => [ 'api_key' => env('BILLPLZ_PRODUCTION_KOPKB_API_KEY', 'f4e099e5-88ca-4712-a01e-b7e1daf78ce2'), 'x_signature' => env('BILLPLZ_PRODUCTION_KOPKB_X_SIGNATURE', 'S-OApBh3DIwelPcWPzlMLMeg'), - 'collection_id' => env('BILLPLZ_PRODUCTION_KOPKB_COLLECTION_ID', 'do6x2mhg'), + 'collection_id' => env('BILLPLZ_PRODUCTION_KOPKB_COLLECTION_ID', 'bwrfvftz'), ], 'sandbox' => [ 'api_key' => env('BILLPLZ_SANDBOX_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), From 46010cfc221f6d4a81dc98d1b7c7941dc1bb71d6 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Tue, 7 Jan 2025 15:42:06 +0800 Subject: [PATCH 20/28] fix production config services --- config/services.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/services.php b/config/services.php index 54b286b..9b31e32 100644 --- a/config/services.php +++ b/config/services.php @@ -38,9 +38,9 @@ return [ 'collection_id' => env('BILLPLZ_PRODUCTION_COLLECTION_ID', '5aosv2dg'), ], 'production_kopkb' => [ - 'api_key' => env('BILLPLZ_PRODUCTION_KOPKB_API_KEY', 'f4e099e5-88ca-4712-a01e-b7e1daf78ce2'), - 'x_signature' => env('BILLPLZ_PRODUCTION_KOPKB_X_SIGNATURE', 'S-OApBh3DIwelPcWPzlMLMeg'), - 'collection_id' => env('BILLPLZ_PRODUCTION_KOPKB_COLLECTION_ID', 'bwrfvftz'), + 'api_key' => env('BILLPLZ_PRODUCTION_KOPKB_API_KEY', 'fb81e895-f307-4c9c-b43d-0b55033ee479'), + 'x_signature' => env('BILLPLZ_PRODUCTION_KOPKB_X_SIGNATURE', 'afdb4035f1fe7f53cfdf3668765235f2714ee2ad6211c287a6ee52d170cb52b9b9e87d795213a9b4ede2de14076cdf2ced351343692194a28b0c23adfe3087bb'), + 'collection_id' => env('BILLPLZ_PRODUCTION_KOPKB_COLLECTION_ID', '93mzsttm'), ], 'sandbox' => [ 'api_key' => env('BILLPLZ_SANDBOX_API_KEY', 'abecfd0c-98d8-4635-abc2-2fcba8c60c11'), From 9255a8633facbf9d1fb1293ad8bcfc0f4474b461 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Tue, 7 Jan 2025 16:11:05 +0800 Subject: [PATCH 21/28] added cron --- .../Commands/UpdateTransactionMaster.php | 11 ++++++-- app/Console/Commands/updateUnsuccess.php | 25 ++++++++++++++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/Console/Commands/UpdateTransactionMaster.php b/app/Console/Commands/UpdateTransactionMaster.php index 37866db..1d84f4d 100644 --- a/app/Console/Commands/UpdateTransactionMaster.php +++ b/app/Console/Commands/UpdateTransactionMaster.php @@ -40,11 +40,18 @@ class UpdateTransactionMaster extends Command public function handle() { $updateOnline = Http::arrahn()->get('/api/transaction/online/update')->json(); - + $updateOnline_Koop = Http::arrahn_koop()->get('/api/transaction/online/update')->json(); + if($updateOnline == 'success'){ return 0; }else{ - Log::error('Update transaction master failed'); + Log::error('PKB::Update transaction master failed'); + } + + if($updateOnline_Koop == 'success'){ + return 0; + }else{ + Log::error('KOOP::Update transaction master failed'); } } } diff --git a/app/Console/Commands/updateUnsuccess.php b/app/Console/Commands/updateUnsuccess.php index e2dd207..3479973 100644 --- a/app/Console/Commands/updateUnsuccess.php +++ b/app/Console/Commands/updateUnsuccess.php @@ -2,9 +2,11 @@ namespace App\Console\Commands; +use App\Models\CompanyStatus; use App\Models\TransactionOnlineStatus; use App\Services\BillplzService; use App\Services\OnlineTransactionLoggerService; +use Billplz\Base\Bill; use Illuminate\Support\Facades\Http; use Illuminate\Console\Command; @@ -29,12 +31,21 @@ class UpdateUnsuccess extends Command * * @return int */ - public function handle(BillplzService $billplzService) + public function handle() { - $getFailedOnlineTransaction = fn() => Http::arrahn()->get('/api/transaction/online/unsuccessful')->json(); - + $getFailedOnlineTransaction_Koop = fn() => Http::arrahn_koop()->get('/api/transaction/online/unsuccessful')->json(); + $FailedBillplzID = array_map(fn($x) => $x['billplz_id'], $getFailedOnlineTransaction()); + $FailedBillplzID_Koop = array_map(fn($x) => $x['billplz_id'], $getFailedOnlineTransaction_Koop()); + + $this->resolve_payment($FailedBillplzID,CompanyStatus::COM_PKB); + $this->resolve_payment($FailedBillplzID_Koop,CompanyStatus::COM_KOOPPKB); + + } + public function resolve_payment($FailedBillplzID,$company) + { + $billplzService = new BillplzService($company); if(sizeof($FailedBillplzID) < 0){ return; @@ -59,7 +70,13 @@ class UpdateUnsuccess extends Command ]; try { - $response = Http::arrahn()->put('/api/transaction/online/unsuccesfull/update', $transactionData); + + $CallableHttp = $company == CompanyStatus::COM_PKB + ? Http::arrahn() + : Http::arrahn_koop(); + + $response = $CallableHttp->put('/api/transaction/online/unsuccesfull/update', $transactionData); + OnlineTransactionLoggerService::logs($transaction['bill_id'], $transactionData, $response, TransactionOnlineStatus::UPDATE_UNSUCCESSFUL_TRANSACTION ); } catch (\Exception $e) { From 6c7de03c4e487350615145df43c2d5fe764104b3 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Tue, 7 Jan 2025 16:50:35 +0800 Subject: [PATCH 22/28] admin review controller --- app/Services/BillplzService.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/Services/BillplzService.php b/app/Services/BillplzService.php index 1eb6a40..782d57f 100644 --- a/app/Services/BillplzService.php +++ b/app/Services/BillplzService.php @@ -140,13 +140,21 @@ class BillplzService public function getArrahnTransactions($queryData) { + $query_all = []; + if(isset($queryData['date'])){ - return Http::arrahn()->get('/api/transaction/online/query', ['date' => $queryData['date']])->json(); + $pkb_query = Http::arrahn()->get('/api/transaction/online/query', ['date' => $queryData['date']])->json(); + $koop_query = Http::arrahn_koop()->get('/api/transaction/online/query', ['date' => $queryData['date']])->json(); + $query_all = array_merge($pkb_query,$koop_query); } if(isset($queryData['billId'])){ - return Http::arrahn()->get('/api/transaction/online/query', ['billId' => $queryData['billId']])->json(); + $pkb_query = Http::arrahn()->get('/api/transaction/online/query', ['billId' => $queryData['billId']])->json(); + $koop_query = Http::arrahn_koop()->get('/api/transaction/online/query', ['billId' => $queryData['billId']])->json(); + $query_all = array_merge($pkb_query,$koop_query); } + + return $query_all; } public function getBillplzTransactionReview($date) From b0272a8fa87dd65ccca99c89a2c122d1ed2331ba Mon Sep 17 00:00:00 2001 From: hafifierahman Date: Sat, 11 Jan 2025 14:01:40 +0800 Subject: [PATCH 23/28] added handled for page expired 419 --- app/Http/Middleware/VerifyCsrfToken.php | 15 ++++++++++++++- .../views/includes/login/loginportal.blade.php | 6 ++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index b98b02e..af67ef1 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -3,6 +3,7 @@ namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; +use Illuminate\Session\TokenMismatchException; class VerifyCsrfToken extends Middleware { @@ -11,7 +12,19 @@ class VerifyCsrfToken extends Middleware * * @var array */ - protected $except = [ + + protected $except = [ '/pembayaran/backend' ]; + + public function handle($request, \Closure $next) + { + try { + return parent::handle($request, $next); + } catch (TokenMismatchException $e) { + // Redirect to login page if CSRF token is invalid + return redirect()->route('login')->with('logsemula', 'Sesi anda telah tamat. Sila log masuk semula.'); + } + } + } diff --git a/resources/views/includes/login/loginportal.blade.php b/resources/views/includes/login/loginportal.blade.php index 0a37d65..fa4d3f1 100644 --- a/resources/views/includes/login/loginportal.blade.php +++ b/resources/views/includes/login/loginportal.blade.php @@ -13,6 +13,12 @@
Log Masuk
+@if(session('logsemula')) +
+ {{ session('logsemula') }} +
+@endif + @csrf
From 7b7a47b13eb7773b5c687923ec85321665d9dc4f Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Sun, 12 Jan 2025 16:42:48 +0800 Subject: [PATCH 24/28] added loader and fix marhun call --- app/Services/PembiayaanService.php | 12 +- public/argon/js/main.js | 2 + public/js/miscellaneous/cart.js | 2 + public/js/miscellaneous/navigation-trolley.js | 5 + .../includes/bayaran/pembayaransag.blade.php | 17 ++- resources/views/includes/home.blade.php | 11 ++ resources/views/includes/main/head.blade.php | 36 +++++ .../views/includes/main/navigation.blade.php | 126 +++++++----------- .../partials/table-pembiayaan.blade.php | 1 + resources/views/modal/marhun.blade.php | 20 ++- routes/api.php | 2 +- 11 files changed, 143 insertions(+), 91 deletions(-) diff --git a/app/Services/PembiayaanService.php b/app/Services/PembiayaanService.php index 7e51e3f..b4ccc9c 100644 --- a/app/Services/PembiayaanService.php +++ b/app/Services/PembiayaanService.php @@ -112,13 +112,17 @@ class PembiayaanService return $formatted; } - public function getMarhunModalData($norujukan) + public function getMarhunModalData($norujukan,$tagsyarikat) { - $gadaianDetails = Http::arrahn()->get('/api/gadai/norujukan/' . $norujukan)->json()[0][0]; + $CallableHttp = $tagsyarikat == CompanyStatus::COM_PKB + ? Http::arrahn() + : Http::arrahn_koop(); + + $gadaianDetails = $CallableHttp->get('/api/gadai/norujukan/' . $norujukan)->json()[0][0]; - $attachCawanganName = function ($x) use ($gadaianDetails) { - $x['cawangan_name'] = Http::arrahn()->get('/api/cawangan/detail/' . $gadaianDetails['kodcaw'])->json()[0]['cawangan']; + $attachCawanganName = function ($x) use ($gadaianDetails,$CallableHttp) { + $x['cawangan_name'] = $CallableHttp->get('/api/cawangan/detail/' . $gadaianDetails['kodcaw'])->json()[0]['cawangan']; return $x; }; diff --git a/public/argon/js/main.js b/public/argon/js/main.js index 17f7d79..2b94b44 100644 --- a/public/argon/js/main.js +++ b/public/argon/js/main.js @@ -1,4 +1,6 @@ function loadingbtn(){ + const loader = document.getElementById('load-arrahn'); + loader.classList.remove('d-none'); $.notifyClose(); // $(this).unbind("click"); $('#background').css('display', 'block'); diff --git a/public/js/miscellaneous/cart.js b/public/js/miscellaneous/cart.js index ee6df57..85fd1a7 100644 --- a/public/js/miscellaneous/cart.js +++ b/public/js/miscellaneous/cart.js @@ -67,6 +67,8 @@ radios.forEach((radio) => { }); let deleteCarts = () => { + const loader = document.getElementById('load-arrahn'); + loader.classList.remove('d-none'); fetch('/deletecarts') .then(response => { if (!response.ok) { diff --git a/public/js/miscellaneous/navigation-trolley.js b/public/js/miscellaneous/navigation-trolley.js index 6d951eb..6dd10b4 100644 --- a/public/js/miscellaneous/navigation-trolley.js +++ b/public/js/miscellaneous/navigation-trolley.js @@ -56,6 +56,11 @@ function redirectTrolley() { redirectInput.value = 'trolley'; form.appendChild(redirectInput); document.body.appendChild(form); + + + const loader = document.getElementById('load-arrahn'); + loader.classList.remove('d-none'); + form.submit(); } diff --git a/resources/views/includes/bayaran/pembayaransag.blade.php b/resources/views/includes/bayaran/pembayaransag.blade.php index 046b600..fa5636b 100644 --- a/resources/views/includes/bayaran/pembayaransag.blade.php +++ b/resources/views/includes/bayaran/pembayaransag.blade.php @@ -41,6 +41,13 @@ Bayar SAG | Portal Pelanggan
+
+
+
+ +
+
+ @csrf
@@ -62,7 +69,10 @@

PKB

- +
+ *sila tick di sini untuk memilih bayaran. + +
@@ -145,7 +155,10 @@

KOPKB

- +
+ *sila tick di sini untuk memilih bayaran. + +
diff --git a/resources/views/includes/home.blade.php b/resources/views/includes/home.blade.php index ee36cbf..85dfeaf 100644 --- a/resources/views/includes/home.blade.php +++ b/resources/views/includes/home.blade.php @@ -2,6 +2,13 @@ @section('content') Home | Portal Pelanggan +
+
+
+ +
+
+
{ + const loader = document.getElementById('load-arrahn'); + loader.classList.remove('d-none'); if (result.isDenied) { let remove_carts = fetch('/deletecarts') .then(response => { diff --git a/resources/views/includes/main/head.blade.php b/resources/views/includes/main/head.blade.php index 4bace97..829096e 100644 --- a/resources/views/includes/main/head.blade.php +++ b/resources/views/includes/main/head.blade.php @@ -64,6 +64,42 @@ opacity: 0.8; display: flex; } + + .loader-arrahn { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 9999; + } + + .loader-arrahn img { + width: 100px; /* Image size */ + } + + .loader-arrahn:before { + content: ''; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 120px; + height: 120px; + background-color: rgba(0, 0, 0, 0.8); + border-radius: 50%; + z-index: -1; + } + + .overlay-arrahn { + position: fixed; + z-index: 9998; + width: 100%; + height: 100%; + top: 0; + left: 0; + background-color: rgba(0, 0, 0, 0.5); + overflow: hidden; + } diff --git a/resources/views/includes/main/navigation.blade.php b/resources/views/includes/main/navigation.blade.php index 55ed837..acfc1b5 100644 --- a/resources/views/includes/main/navigation.blade.php +++ b/resources/views/includes/main/navigation.blade.php @@ -1,69 +1,51 @@ - + + +
+
+
+ +
+
+
diff --git a/resources/views/modal/marhun.blade.php b/resources/views/modal/marhun.blade.php index e2c6acf..682763c 100644 --- a/resources/views/modal/marhun.blade.php +++ b/resources/views/modal/marhun.blade.php @@ -169,13 +169,23 @@ @push('additional_js_scripts') + Bayar SAG | Portal Pelanggan
@@ -65,12 +112,12 @@ @if($list_pkb)
-
+

PKB

- *sila tick di sini untuk memilih bayaran. + *sila tick di sini untuk memilih bayaran.
@@ -121,7 +168,7 @@ } @endphp -
No
Rujukan
@php - $upahtawarruq = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/upahtawarruq/'. $bayar['kodcaw'] . '/' . $bayar['norujukan'])->json(); + $upahtawarruq = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/upahtawarruq/'. $bayar['kodcaw'] . '/' . $bayar['norujukan'],['jeniskeuntungan' => ($bayar['tagbaru'] == 1) ? 'onepercent' : 'asal'])->json(); @endphp {{ $upahtawarruq }} {{ $data->norujukan }} + {{ $data->tempoh }} + @@ -151,13 +198,13 @@ @if($list_koop)
-
+

KOPKB

- *sila tick di sini untuk memilih bayaran. - + *sila tick di sini untuk memilih bayaran. +
@@ -377,6 +424,23 @@ "pagingType": "simple", "paging": false + }); + + var selepastawarruq_kooptable = $('#selepas_tawarruq_koop').DataTable({ + "bLengthChange": false, + "bFilter": false, + "bInfo": false, + language: { + 'paginate': { + 'previous': '', + 'next': '' + } + }, + "scrollX": true, + "pageLength": 10, + "pagingType": "simple", + "paging": false + }); // var selepastawarruqtable = $('#ringkasan_bayaran').DataTable({ // "bLengthChange": false, diff --git a/resources/views/includes/bayaran/senaraibayaransag.blade.php b/resources/views/includes/bayaran/senaraibayaransag.blade.php index c8c7b70..eff7d57 100644 --- a/resources/views/includes/bayaran/senaraibayaransag.blade.php +++ b/resources/views/includes/bayaran/senaraibayaransag.blade.php @@ -194,7 +194,6 @@ let berat = $(e).data('berat'); let nm = $(e).data('nm'); - console.log(pinjaman,upah12,bakipjm,berat,nm); $('#pembiayaan').text('RM ' + pinjaman); $('#bpembiayaan').text('RM ' + bakipjm); diff --git a/resources/views/includes/home-backup.blade.php b/resources/views/includes/home-backup.blade.php index 5367ee5..0aafc7d 100644 --- a/resources/views/includes/home-backup.blade.php +++ b/resources/views/includes/home-backup.blade.php @@ -693,7 +693,6 @@ var hargaemastable = $('#harga_emas').DataTable({ dataType: "json", success: function(data) { namacawangan = data[0].namacaw; - console.log(namacawangan); namacawangan = namacawangan.toLowerCase().substring(8).replace(/\b[a-z]/g, function(value) { return value.toUpperCase(); }); @@ -835,7 +834,6 @@ var hargaemastable = $('#harga_emas').DataTable({ async: false, dataType: "json", success: function(data) { - console.log(data); for(i in data){ datalelong.push(data[i]); } diff --git a/resources/views/includes/home.blade.php b/resources/views/includes/home.blade.php index 85dfeaf..cd77d5e 100644 --- a/resources/views/includes/home.blade.php +++ b/resources/views/includes/home.blade.php @@ -146,7 +146,6 @@ let totalSagInCart = []; let totaltagSyarikat = []; let updateSagInCart = function(norujukan,syarikat){ - console.log(norujukan,syarikat); let isNorujukanIsAlreadyInCart = totalSagInCart.includes(norujukan); if(isNorujukanIsAlreadyInCart){ @@ -159,9 +158,6 @@ totalSagInCart.push(norujukan); totaltagSyarikat.push(syarikat); } - console.log("total:" + totalSagInCart); - console.log("totalsyarikat:" + totaltagSyarikat); - }; // Add event listener to checkboxes to update total count customer wants to pay @@ -213,13 +209,11 @@ if (result.isDenied) { let remove_carts = fetch('/deletecarts') .then(response => { - console.log(response.data); if (!response.ok) { throw new Error('HTTP error ' + response.status); } return response.json(); }) - .then(data => console.log(data)) .catch(error => console.error(error)); } @@ -244,5 +238,12 @@ return null; } }; + + window.addEventListener('pageshow', (event) => { + const loader = document.getElementById('load-arrahn'); + if (loader) { + loader.classList.add('d-none'); + } + }); @endsection diff --git a/resources/views/includes/rekod/rekodsag.blade.php b/resources/views/includes/rekod/rekodsag.blade.php index 1d796b0..7952075 100644 --- a/resources/views/includes/rekod/rekodsag.blade.php +++ b/resources/views/includes/rekod/rekodsag.blade.php @@ -234,7 +234,6 @@ let berat = $(e).data('berat'); let nm = $(e).data('nm'); - console.log(pinjaman,upah12,bakipjm,berat,nm); $('#pembiayaan').text('RM ' + pinjaman); $('#bpemb').text('RM ' + bakipjm); From 4accfb30213a6b77f7b9923baeb4b13de90471c3 Mon Sep 17 00:00:00 2001 From: Hafifie PKB Date: Mon, 20 Jan 2025 15:21:01 +0800 Subject: [PATCH 28/28] added api url and remove spare button --- config/api.php | 4 ++-- resources/views/includes/login/loginportal.blade.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/api.php b/config/api.php index 39b8ad4..eff8a13 100644 --- a/config/api.php +++ b/config/api.php @@ -1,5 +1,5 @@ env('API_URL','http://localhost:8000'), - 'url_koop' => env('API_URL_KOOP','http://localhost:8000') + 'url' => 'https://api2.arrahn.com.my', + 'url_koop' => 'https://api3.arrahn.com.my' ]; \ No newline at end of file diff --git a/resources/views/includes/login/loginportal.blade.php b/resources/views/includes/login/loginportal.blade.php index fa4d3f1..d4a6f6c 100644 --- a/resources/views/includes/login/loginportal.blade.php +++ b/resources/views/includes/login/loginportal.blade.php @@ -47,7 +47,7 @@