merged main to feature split
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\PersonalCarts;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class DeleteCarts extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'carts:delete';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Delete all carts';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
try{
|
||||
PersonalCarts::query()->onlyTrashed()->forceDelete();
|
||||
Log::info('All carts have been deleted.');
|
||||
$this->info('All carts have been deleted.');
|
||||
}catch(\Exception $e){
|
||||
Log::error('Error deleting carts: ' . $e->getMessage());
|
||||
$this->error('Error deleting carts: ' . $e->getMessage());
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
@@ -13,25 +15,60 @@ 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)
|
||||
{
|
||||
$request->validated();
|
||||
|
||||
$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);
|
||||
|
||||
$arraybayar = $this->setUpahTawarruq($request->getPembiayaanFromNorujukan());
|
||||
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 = [];
|
||||
|
||||
return view('includes.bayaran.pembayaransag', compact('arraybayar'));
|
||||
}else{
|
||||
/* Doesn't Have Carts. First Timer */
|
||||
$request->validated();
|
||||
|
||||
$arraybayar = $this->setUpahTawarruq($request->getPembiayaanFromNorujukan());
|
||||
|
||||
$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)
|
||||
public function PembayaranEngine(Request $request)
|
||||
{
|
||||
['email' => $customerEmail, 'notel' => $customerPhoneNumber, 'name' => $customerName, 'icno' => $customerIcno] = auth()->user()->toArray();
|
||||
|
||||
|
||||
$bayaranArrahn = array_filter($request->txtjenisbayaran, fn($x) => $x == 'arrahn');
|
||||
$bayaranOthers = array_filter($request->txtjenisbayaran, fn($x) => $x != 'arrahn');
|
||||
|
||||
|
||||
$bayaranArrahnArray = array_map(function ($x) use ($customerName, $customerIcno, $request) {
|
||||
return [
|
||||
'customer_name' => $customerName,
|
||||
@@ -62,9 +99,14 @@ class BayaranController extends Controller
|
||||
return Money::MYR($sum())->add($billPlzTransactionFee);
|
||||
};
|
||||
|
||||
$bill = $billplzService->createBill([$customerEmail, $customerPhoneNumber, $customerName, $getPaymentSum()]);
|
||||
$company = strtoupper($request->txtcompany);
|
||||
$billplzService = new BillplzService($company);
|
||||
$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([
|
||||
@@ -76,12 +118,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 {
|
||||
@@ -95,10 +137,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(),
|
||||
@@ -122,7 +167,7 @@ class BayaranController extends Controller
|
||||
}
|
||||
|
||||
try {
|
||||
$response = Http::arrahn()
|
||||
$response = $this->CallableHttp
|
||||
->put('/api/transaction/online/tagportal', [
|
||||
'billplz_id' => $bill['id'],
|
||||
])
|
||||
@@ -142,11 +187,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;
|
||||
@@ -155,16 +201,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];
|
||||
@@ -172,14 +218,15 @@ 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;
|
||||
|
||||
if ($isBillUnpaid) {
|
||||
Http::arrahn()->put('/api/online/transaction', [
|
||||
$this->CallableHttp->put('/api/online/transaction', [
|
||||
'billplz_id' => $data['id'],
|
||||
'status' => 'UNSUCCESSFUL',
|
||||
'paid_at' => null,
|
||||
@@ -188,29 +235,43 @@ 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'),
|
||||
]);
|
||||
|
||||
$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;
|
||||
|
||||
if ($isBillUnpaid) {
|
||||
Http::arrahn()->put('/api/online/transaction', [
|
||||
$this->CallableHttp->put('/api/online/transaction', [
|
||||
'billplz_id' => $data['id'],
|
||||
'status' => 'NOT PAID',
|
||||
'paid_at' => null,
|
||||
]);
|
||||
|
||||
$transactionOnline = Http::arrahn()
|
||||
$transactionOnline = $this->CallableHttp
|
||||
->get('/api/transaction/online/login', [
|
||||
'billplz_id' => $data['id'],
|
||||
])
|
||||
@@ -219,18 +280,33 @@ 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()
|
||||
$column_updated = (Session::get('company') == 'PKB') ? 'status_pkb' : 'status_koop';
|
||||
$value_paid = 'PAID';
|
||||
$column_payment_updated = (Session::get('company') == 'PKB') ? 'payment_pkb' : 'payment_koop';
|
||||
|
||||
$transactionOnline = $this->CallableHttp
|
||||
->get('/api/transaction/online/login', [
|
||||
'billplz_id' => $data['id'],
|
||||
])
|
||||
->json();
|
||||
|
||||
$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,
|
||||
$column_payment_updated => json_encode($transactionOnline)
|
||||
]);
|
||||
|
||||
return redirect()->route('pay.success', [
|
||||
'transactionOnline' => $transactionOnline,
|
||||
]);
|
||||
@@ -238,23 +314,76 @@ class BayaranController extends Controller
|
||||
|
||||
public function successPayment(Request $request)
|
||||
{
|
||||
$this->serviceCallHttp(Session::get('company'));
|
||||
$transactionOnline = $request->transactionOnline;
|
||||
|
||||
$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();
|
||||
|
||||
if(!$exist_carts){
|
||||
$paid_carts = PersonalCarts::where('ic_no', Auth::user()->icno)
|
||||
->where('user_id', Auth::user()->id)
|
||||
->where(function ($query) {
|
||||
$query->where('status_pkb', 'PAID')
|
||||
->where('status_koop', 'PAID');
|
||||
})
|
||||
->first();
|
||||
$paid_carts = optional($paid_carts)->toArray();
|
||||
if($paid_carts){
|
||||
|
||||
$trans_pkb = json_decode($paid_carts['payment_pkb'],true);
|
||||
$trans_koop = json_decode($paid_carts['payment_koop'],true);
|
||||
|
||||
$trans_pkb = array_map(function ($item) {
|
||||
$item['tag_syarikat'] = CompanyStatus::COM_PKB;
|
||||
return $item;
|
||||
}, $trans_pkb);
|
||||
|
||||
$trans_koop = array_map(function ($item) {
|
||||
$item['tag_syarikat'] = CompanyStatus::COM_KOOPPKB;
|
||||
return $item;
|
||||
}, $trans_koop);
|
||||
|
||||
$transactionOnline = array_merge($trans_pkb,$trans_koop);
|
||||
|
||||
$arraycawangan = array_map(
|
||||
fn($x) => $x['tag_syarikat'] == CompanyStatus::COM_PKB
|
||||
? Http::arrahn()
|
||||
->get('/api/cawangan/detail/' . $x['kodcaw'])
|
||||
->json()[0]
|
||||
: Http::arrahn_koop()
|
||||
->get('/api/cawangan/detail/' . $x['kodcaw'])
|
||||
->json()[0],
|
||||
$transactionOnline
|
||||
);
|
||||
|
||||
|
||||
return view('pembayaran.result.berjayaportal', compact('transactionOnline', 'arraycawangan','exist_carts'));
|
||||
}
|
||||
}
|
||||
|
||||
$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,
|
||||
);
|
||||
|
||||
return view('pembayaran.result.berjayaportal', compact('transactionOnline', 'arraycawangan', 'arraygadai'));
|
||||
return view('pembayaran.result.berjayaportal', compact('transactionOnline', 'arraycawangan', 'arraygadai','exist_carts'));
|
||||
}
|
||||
|
||||
public function failedPayment()
|
||||
@@ -270,7 +399,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();
|
||||
|
||||
@@ -302,7 +431,11 @@ class BayaranController extends Controller
|
||||
|
||||
$getUpahTawarruqPerPembiayaan = function ($x) use ($getJenisKeuntungan) {
|
||||
$jenisKeuntungan = $getJenisKeuntungan($x);
|
||||
$upahTawarruq = Http::arrahn()
|
||||
$CallableHttp = $x['tag_syarikat'] == CompanyStatus::COM_PKB
|
||||
? Http::arrahn()
|
||||
: Http::arrahn_koop();
|
||||
|
||||
$upahTawarruq = $CallableHttp
|
||||
->get('/api/upahtawarruq/' . $x['kodcaw'] . '/' . $x['norujukan'], ['jeniskeuntungan' => $jenisKeuntungan])
|
||||
->json();
|
||||
|
||||
@@ -319,4 +452,47 @@ 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 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)
|
||||
->first();
|
||||
|
||||
if ($exist_carts) {
|
||||
$exist_carts->delete();
|
||||
}
|
||||
|
||||
return response()->json($exist_carts);
|
||||
}
|
||||
|
||||
public function serviceCallHttp($company){
|
||||
$this->CallableHttp = $company == 'PKB'
|
||||
? Http::arrahn()
|
||||
: Http::arrahn_koop();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,11 +30,24 @@ class HomeController extends Controller
|
||||
{
|
||||
$homeUrl = route('home');
|
||||
$authUser = Auth::user();
|
||||
$customerInfo = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
$customer_pkb = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/portal/customer/info', ['ic' => $authUser['icno']])
|
||||
->json();
|
||||
|
||||
['gadai' => $customer_gadai, 'lelong' => $customer_lelong] = $customerInfo;
|
||||
$customer_koop = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url_koop') . '/portal/customer/info', ['ic' => $authUser['icno']])
|
||||
->json();
|
||||
|
||||
// ['gadai' => $customer_gadai, 'lelong' => $customer_lelong] = $customerInfo;
|
||||
$customer_gadai = array_merge(
|
||||
$customer_pkb['gadai'] ?? [],
|
||||
$customer_koop['gadai'] ?? []
|
||||
);
|
||||
|
||||
$customer_lelong = array_merge(
|
||||
$customer_pkb['lelong'] ?? [],
|
||||
$customer_koop['lelong'] ?? []
|
||||
);
|
||||
|
||||
// only get lelong that is harga jualan that is not null or 0
|
||||
$customer_lelong = array_filter($customer_lelong, fn($x) => $x['hargajualan'] != null && $x['hargajualan'] != 0);
|
||||
@@ -62,12 +75,26 @@ class HomeController extends Controller
|
||||
$pembiayaan = $this->pembiayaanService->getPembiayaan($request->filter);
|
||||
|
||||
$authUser = Auth::user();
|
||||
$customerInfo = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
$customer_pkb = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url') . '/portal/customer/info', ['ic' => $authUser['icno']])
|
||||
->json();
|
||||
|
||||
['gadai' => $customer_gadai, 'lelong' => $customer_lelong] = $customerInfo;
|
||||
$customer_koop = Http::withOptions(['verify' => config('app.api_verify')])
|
||||
->get(config('api.url_koop') . '/portal/customer/info', ['ic' => $authUser['icno']])
|
||||
->json();
|
||||
|
||||
// ['gadai' => $customer_gadai, 'lelong' => $customer_lelong] = $customerInfo;
|
||||
|
||||
$customer_gadai = array_merge(
|
||||
$customer_pkb['gadai'] ?? [],
|
||||
$customer_koop['gadai'] ?? []
|
||||
);
|
||||
|
||||
$customer_lelong = array_merge(
|
||||
$customer_pkb['lelong'] ?? [],
|
||||
$customer_koop['lelong'] ?? []
|
||||
);
|
||||
|
||||
// only get lelong that is harga jualan that is not null or 0
|
||||
$customer_lelong = array_filter($customer_lelong, fn($x) => $x['hargajualan'] != null && $x['hargajualan'] != 0);
|
||||
|
||||
|
||||
@@ -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,29 @@ 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_koop['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){
|
||||
$customer_pkb['lelong'][$index]['tag_syarikat'] = CompanyStatus::COM_KOOPPKB;
|
||||
$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 +61,33 @@ 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){
|
||||
$customer_koop['lelong'][$index]['tag_syarikat'] = CompanyStatus::COM_KOOPPKB;
|
||||
$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'));
|
||||
}
|
||||
@@ -63,14 +96,16 @@ 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();
|
||||
|
||||
$melebihi6bulan = [];
|
||||
|
||||
if(isset($CustomerInfo['gadai']))
|
||||
if(isset($customer_pkb['gadai']))
|
||||
{
|
||||
foreach($CustomerInfo['gadai'] as $index=>$gadai)
|
||||
foreach($customer_pkb['gadai'] as $index=>$gadai)
|
||||
{
|
||||
$gadai['tag_syarikat'] = CompanyStatus::COM_PKB;
|
||||
if($gadai['tempoh'] >= 6)
|
||||
{
|
||||
array_push($melebihi6bulan,$gadai);
|
||||
@@ -78,6 +113,21 @@ class InformationController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($customer_koop['gadai']))
|
||||
{
|
||||
foreach($customer_koop['gadai'] as $index=>$gadai)
|
||||
{
|
||||
$gadai['tag_syarikat'] = CompanyStatus::COM_KOOPPKB;
|
||||
|
||||
if($gadai['tempoh'] >= 6)
|
||||
{
|
||||
array_push($melebihi6bulan,$gadai);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return response()->json($melebihi6bulan,200);
|
||||
// return view('includes.information.melebihi6bulan',compact('melebihi6bulan'));
|
||||
}
|
||||
@@ -86,12 +136,13 @@ 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();
|
||||
|
||||
$lelong = [];
|
||||
if(isset($CustomerInfo['lelong'])){
|
||||
if(sizeof($CustomerInfo['lelong']) > 0){
|
||||
foreach($CustomerInfo['lelong'] as $index=>$lel){
|
||||
if(isset($customer_pkb['lelong'])){
|
||||
if(sizeof($customer_pkb['lelong']) > 0){
|
||||
foreach($customer_pkb['lelong'] as $index=>$lel){
|
||||
$array_lelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api-lelong.url') . '/api/portalApi',['norujukan' => $lel['norujukan']])->json();
|
||||
|
||||
if($array_lelong === null){
|
||||
@@ -99,11 +150,29 @@ class InformationController extends Controller
|
||||
}
|
||||
|
||||
if($array_lelong['lelong'] !== null){
|
||||
$CustomerInfo['lelong'][$index] = collect($lel)->merge($array_lelong['lelong'])->toArray();
|
||||
$customer_pkb['lelong'][$index] = collect($lel)->merge($array_lelong['lelong'])->toArray();
|
||||
}
|
||||
}
|
||||
$lelong = collect($lelong)->merge($CustomerInfo['lelong']);
|
||||
$lelong = $lelong->toArray();
|
||||
$lelong = collect($lelong)->merge($customer_pkb['lelong']);
|
||||
$lelong = $lelong->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($customer_koop['lelong'])){
|
||||
if(sizeof($customer_koop['lelong']) > 0){
|
||||
foreach($customer_koop['lelong'] as $index=>$lel){
|
||||
$array_lelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api-lelong.url') . '/api/portalApi',['norujukan' => $lel['norujukan']])->json();
|
||||
|
||||
if($array_lelong === null){
|
||||
continue;
|
||||
}
|
||||
|
||||
if($array_lelong['lelong'] !== null){
|
||||
$customer_koop['lelong'][$index] = collect($lel)->merge($array_lelong['lelong'])->toArray();
|
||||
}
|
||||
}
|
||||
$lelong = collect($lelong)->merge($customer_koop['lelong']);
|
||||
$lelong = $lelong->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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.');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
@@ -53,9 +54,33 @@ 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);
|
||||
|
||||
return array_map(fn($x) => Http::arrahn()->get('/api/gadai/norujukan/' . $x)->json()[0][0], $norujukanList);
|
||||
$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 = $filterByStatus(CompanyStatus::COM_PKB);
|
||||
$list_koop = $filterByStatus(CompanyStatus::COM_KOOPPKB);
|
||||
|
||||
$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()
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CompanyStatus extends Model
|
||||
{
|
||||
const COM_PKB = 1;
|
||||
const COM_KOOPPKB = 2;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class PersonalCarts extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
use SoftDeletes;
|
||||
|
||||
protected $table = 'personal_carts';
|
||||
protected $dates = ['deleted_at'];
|
||||
|
||||
protected $casts = [
|
||||
'list_pkb' => 'array',
|
||||
'list_koop' => 'array',
|
||||
];
|
||||
|
||||
protected $guarded = [
|
||||
'id',
|
||||
'ic_no',
|
||||
'list_pkb',
|
||||
'list_koop',
|
||||
'status_pkb',
|
||||
'status_koop',
|
||||
'payment_pkb',
|
||||
'payment_koop',
|
||||
'user_id',
|
||||
'created_at',
|
||||
'updated_at'
|
||||
];
|
||||
|
||||
public $timestamps = true;
|
||||
}
|
||||
@@ -28,11 +28,21 @@ class AppServiceProvider extends ServiceProvider
|
||||
Http::macro('arrahn', function () {
|
||||
return Http::withOptions(['verify' => 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;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,24 +16,14 @@ class BillplzService
|
||||
public $callbackUrl;
|
||||
public $paymentTitle;
|
||||
public $redirectUrl;
|
||||
public $company;
|
||||
|
||||
public function __construct()
|
||||
public function __construct(string $company)
|
||||
{
|
||||
$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->company = $company;
|
||||
$this->setupBillplzClient($company);
|
||||
$this->setupUrls();
|
||||
$this->paymentTitle = config('services.billplz.paymentTitle');
|
||||
}
|
||||
|
||||
public function getCollections()
|
||||
@@ -39,8 +31,9 @@ class BillplzService
|
||||
return $this->client->collection()->all()->toArray();
|
||||
}
|
||||
|
||||
public function createBill(array $data)
|
||||
public function createBill(array $data,string $company)
|
||||
{
|
||||
|
||||
$composed_data = [
|
||||
$this->config['collection_id'],
|
||||
...$data,
|
||||
@@ -94,6 +87,8 @@ class BillplzService
|
||||
|
||||
public function webhook($request)
|
||||
{
|
||||
// $this->setCompany(Session::get('company'));
|
||||
// $this->setupBillplzClient($this->company);
|
||||
try {
|
||||
$response = $this->client->webhook($request);
|
||||
|
||||
@@ -145,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)
|
||||
@@ -252,4 +255,61 @@ class BillplzService
|
||||
{
|
||||
return array_map(fn($x) => $this->client->bill()->get($x)->toArray(), $billIds);
|
||||
}
|
||||
|
||||
protected function setupBillplzClient($company)
|
||||
{
|
||||
$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'], ($this->isBase64($billplzConfig['x_signature'])) ? $billplzConfig['x_signature'] : base64_encode($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')];
|
||||
}
|
||||
|
||||
protected function isBase64($string) {
|
||||
if($this->isBase64UrlSafe($string)){
|
||||
return true;
|
||||
}
|
||||
|
||||
if (preg_match('/^[A-Za-z0-9+\/=]+$/', $string)) {
|
||||
return base64_encode(base64_decode($string, true)) === $string;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected function isBase64UrlSafe($string) {
|
||||
// Convert URL-safe Base64 to standard Base64
|
||||
$standardBase64 = str_replace(['-', '_'], ['+', '/'], $string);
|
||||
|
||||
// Add padding if necessary
|
||||
$remainder = strlen($standardBase64) % 4;
|
||||
if ($remainder > 0) {
|
||||
$standardBase64 .= str_repeat('=', 4 - $remainder);
|
||||
}
|
||||
|
||||
// Attempt to decode the string
|
||||
$decoded = base64_decode($standardBase64, true);
|
||||
|
||||
return $decoded !== false; // Return true if it successfully decodes
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Services;
|
||||
|
||||
use App\Http\Controllers\InformationController;
|
||||
use App\Models\CompanyStatus;
|
||||
use Illuminate\Http\Client\Pool;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
@@ -23,6 +24,9 @@ class PembiayaanService
|
||||
}
|
||||
|
||||
$pembiayaan = array_filter($getPembiayaan(), fn($x) => $x->hargajualan != null || $x->hargajualan != 0);
|
||||
// $pembiayaan_filter = array_filter($getPembiayaan(),fn($x) => $x->tag_syarikat == CompanyStatus::COM_PKB);
|
||||
// $pembiayaan_koop = array_filter($getPembiayaan(),fn($x) => $x->tag_syarikat == CompanyStatus::COM_PKB);
|
||||
|
||||
$pembiayaan = $this->setUpahTawarruq($pembiayaan);
|
||||
$pembiayaan = $this->formatPembiayaanData($pembiayaan);
|
||||
$pembiayaan = $this->checkPembiayaanPaymentDisabled($pembiayaan);
|
||||
@@ -44,7 +48,12 @@ class PembiayaanService
|
||||
|
||||
$getUpahTawarruqPerPembiayaan = function ($x) use ($getJenisKeuntungan) {
|
||||
$jenisKeuntungan = $getJenisKeuntungan($x);
|
||||
$upahTawarruq = Http::arrahn()->get('/api/upahtawarruq/' . $x->kodcaw . '/' . $x->norujukan, ['jeniskeuntungan' => $jenisKeuntungan])->json();
|
||||
|
||||
$CallableHttp = $x->tag_syarikat == CompanyStatus::COM_PKB
|
||||
? Http::arrahn()
|
||||
: Http::arrahn_koop();
|
||||
|
||||
$upahTawarruq = $CallableHttp->get('/api/upahtawarruq/' . $x->kodcaw . '/' . $x->norujukan, ['jeniskeuntungan' => $jenisKeuntungan])->json();
|
||||
|
||||
if ($jenisKeuntungan == 'onepercent') {
|
||||
$x->upah_tawarruq = $upahTawarruq['keuntungan'] + $upahTawarruq['ujrah'];
|
||||
@@ -62,7 +71,10 @@ class PembiayaanService
|
||||
|
||||
private function formatPembiayaanData($pembiayaan)
|
||||
{
|
||||
$allCawangan = Http::arrahn()->get('/api/cawangan')->json();
|
||||
$arrahnCawangan = Http::arrahn()->get('/api/cawangan')->json();
|
||||
$arrahnKoopCawangan = Http::arrahn_koop()->get('/api/cawangan')->json();
|
||||
|
||||
$allCawangan = array_merge($arrahnCawangan, $arrahnKoopCawangan);
|
||||
|
||||
$setCawanganFullName = function ($pembiayaan) use ($allCawangan) {
|
||||
$cawangan = array_filter($allCawangan, fn($x) => $x['kodcaw'] === $pembiayaan->kodcaw);
|
||||
@@ -100,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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user