Add online transaction log module

This commit is contained in:
Afiq Hamzah
2024-08-01 13:58:50 +08:00
parent 9dd661ddb3
commit 23ebcdd98e
7 changed files with 305 additions and 86 deletions
@@ -2,25 +2,24 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\TransactionOnline;
use App\Advansur; use App\Advansur;
use App\Transaction;
use App\TransaksiKeuntungan;
use App\Gadai;
use App\Cawangan;
use App\GlDetail;
use App\Audit; use App\Audit;
use Illuminate\Http\Request; use App\Cawangan;
use Carbon\Carbon; use App\Gadai;
use App\Services\OnePercentServices; use App\GlDetail;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request as HttpRequest;
use App\Support\v2\GadaiV2 as Version2Gadai;
use App\Support\v2\Calculation;
use App\Http\Controllers\TebusController as TebusController; use App\Http\Controllers\TebusController as TebusController;
use Illuminate\Support\Facades\Http; use App\Services\Loggers\OnlineTransactionLoggerService;
use App\Services\OnePercentServices;
use App\Support\v2\Calculation;
use App\Support\v2\GadaiV2 as Version2Gadai;
use App\Transaction;
use App\TransactionOnline;
use App\TransactionOnlineStatus;
use App\TransaksiKeuntungan;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class TransactionOnlineController extends Controller class TransactionOnlineController extends Controller
{ {
@@ -30,20 +29,18 @@ class TransactionOnlineController extends Controller
return response()->json($transactionOnline); return response()->json($transactionOnline);
} }
public function getListTransactionOnlineQuery(Request $request) public function getListTransactionOnlineQuery(Request $request)
{ {
$date = $request->date ? $request->date : Carbon::now()->toDateString(); $date = $request->date ? $request->date : Carbon::now()->toDateString();
$transactionOnline = TransactionOnline::on('mysql7') $transactionOnline = TransactionOnline::on('mysql7')
->whereDate('tarikh', $date) ->whereDate('tarikh', $date)
->get(); ->get();
return response()->json($transactionOnline); return response()->json($transactionOnline);
} }
public function getLatestNosiri() public function getLatestNosiri()
{ {
$current = Carbon::now(); $current = Carbon::now();
@@ -75,7 +72,7 @@ class TransactionOnlineController extends Controller
'masa' => $current->toTimeString(), 'masa' => $current->toTimeString(),
'customer_name' => $request->customer_name, 'customer_name' => $request->customer_name,
'tempohbayar' => $sag['tempoh'], 'tempohbayar' => $sag['tempoh'],
'jenisbayaran' => $request->jenisbayaran ? $request->jenisbayaran : 'A' 'jenisbayaran' => $request->jenisbayaran ? $request->jenisbayaran : 'A',
]); ]);
return response()->json($transaction, 201); return response()->json($transaction, 201);
@@ -85,7 +82,7 @@ class TransactionOnlineController extends Controller
{ {
$transaction = TransactionOnline::on('mysql7')->where('billplz_id', '=', $request->billplz_id)->update(array( $transaction = TransactionOnline::on('mysql7')->where('billplz_id', '=', $request->billplz_id)->update(array(
'status' => $request->status, 'status' => $request->status,
'paid_at' => $request->paid_at 'paid_at' => $request->paid_at,
)); ));
return response()->json($transaction, 200); return response()->json($transaction, 200);
@@ -103,27 +100,40 @@ class TransactionOnlineController extends Controller
$gadai_data = Gadai::on($cawangan['mysql'])->where([['norujukan', $transaction['norujukan']], ['nokp', $transaction['nokp']]])->first(); $gadai_data = Gadai::on($cawangan['mysql'])->where([['norujukan', $transaction['norujukan']], ['nokp', $transaction['nokp']]])->first();
if ($transaction->jenisbayaran == 'A') { if ($transaction->jenisbayaran == 'A') {
if ($gadai_data['hargajualan'] > 0) { if ($gadai_data['hargajualan'] > 0) {
$response = $this->updateGadaiMarhunOnline($transaction['kodcaw'], $transaction['norujukan'], $transaction['total_payment'], $transaction['paid_at'], $transaction['tempohbayar']); $response = $this->updateGadaiMarhunOnline($transaction['kodcaw'], $transaction['norujukan'], $transaction['total_payment'], $transaction['paid_at'], $transaction['tempohbayar'], $transaction['billplz_id']);
} else { } else {
$this->createAdvansur($transaction['kodcaw'], $transaction['norujukan'], $transaction['total_payment'], $transaction['paid_at']); $this->createAdvansur($transaction['kodcaw'], $transaction['norujukan'], $transaction['total_payment'], $transaction['paid_at']);
} }
} }
$glDetailData = [
GlDetail::on($cawangan['mysql'])->create([
'kodcaw' => $transaction['kodcaw'], 'kodcaw' => $transaction['kodcaw'],
'tarikh' => Carbon::parse($transaction['paid_at'])->format('Y-m-d'), 'tarikh' => Carbon::parse($transaction['paid_at'])->format('Y-m-d'),
'dtacct' => '1000/010', 'dtacct' => '1000/010',
'ktacct' => '1000/020', 'ktacct' => '1000/020',
'descpt' => 'SERAHAN BAYAR ONLINE - ' . $transaction['norujukan'], 'descpt' => 'SERAHAN BAYAR ONLINE - ' . $transaction['norujukan'],
'serahan' => $transaction['total_payment'], 'serahan' => $transaction['total_payment'],
'teller' => 'ONLINE' 'teller' => 'ONLINE',
]); ];
TransactionOnline::on('mysql7')->where([['norujukan', $transaction['norujukan']], ['billplz_id', $transaction['billplz_id']]])->update([ try {
$glDetail = GlDetail::on($cawangan['mysql'])->create($glDetailData);
OnlineTransactionLoggerService::logsAfterDBTransaction($transaction->billplz_id, TransactionOnlineStatus::CRONJOB_REGISTER_GLDETAIL, $glDetail, $glDetailData);
} catch (\Exception $e) {
OnlineTransactionLoggerService::logsAfterDBTransaction($transaction->billplz_id, TransactionOnlineStatus::CRONJOB_REGISTER_GLDETAIL, $glDetail, $e->getMessage());
}
$transactionOnlineData = [
'update_status' => 1, 'update_status' => 1,
'update_serahan' => 1 'update_serahan' => 1,
]); ];
try {
$transactionOnline = TransactionOnline::on('mysql7')->where([['norujukan', $transaction['norujukan']], ['billplz_id', $transaction['billplz_id']]])->update($transactionOnlineData);
OnlineTransactionLoggerService::logsAfterDBTransaction($transaction['billplz_id'], TransactionOnlineStatus::CRONJOB_UPDATE_TRANSAKSI_ONLINE, $transactionOnlineData, $transactionOnline);
} catch (\Exception $e) {
OnlineTransactionLoggerService::logsAfterDBTransaction($transaction['billplz_id'], TransactionOnlineStatus::CRONJOB_UPDATE_TRANSAKSI_ONLINE, $transactionOnlineData, $e->getMessage());
}
} }
return response()->json('success'); return response()->json('success');
@@ -246,8 +256,6 @@ class TransactionOnlineController extends Controller
// } // }
// $bilang_bln = $tempoh - $gadai['tempohbayar']; // $bilang_bln = $tempoh - $gadai['tempohbayar'];
// $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ // $transaction_upah = TransaksiKeuntungan::on('mysql7')->create([
// 'norujukan' => $norujukan, // 'norujukan' => $norujukan,
// 'bayaran_keuntungan' => $upahsemasa, // 'bayaran_keuntungan' => $upahsemasa,
@@ -265,7 +273,6 @@ class TransactionOnlineController extends Controller
// ]); // ]);
// //
// DB::connection($cawangan['mysql'])->transaction(function () use($cawangan,$baki_pinjaman,$current,$norujukan,$gadai,$baki_hargajualan,$lelong_tawarruq,$margin_semasa){ // DB::connection($cawangan['mysql'])->transaction(function () use($cawangan,$baki_pinjaman,$current,$norujukan,$gadai,$baki_hargajualan,$lelong_tawarruq,$margin_semasa){
// $margin_updated = ($baki_pinjaman / $gadai['nilaimarhun']) * 100; // $margin_updated = ($baki_pinjaman / $gadai['nilaimarhun']) * 100;
@@ -309,7 +316,7 @@ class TransactionOnlineController extends Controller
// return response()->json("success",200); // return response()->json("success",200);
// } // }
public function updateGadaiMarhunOnline($kodcaw, $norujukan, $bayaran, $paid_at, $tempohbayar) public function updateGadaiMarhunOnline($kodcaw, $norujukan, $bayaran, $paid_at, $tempohbayar, $bill_id)
{ {
$current = Carbon::now(); $current = Carbon::now();
$current = new Carbon(); $current = new Carbon();
@@ -343,9 +350,9 @@ class TransactionOnlineController extends Controller
try { try {
DB::connection('mysql7')->transaction(function () use ($norujukan, $gadai, $kodcaw, $current, $baki_hargajualan, $cawangan, $old_data, $lelong_tawarruq, $margin_semasa, $bayaran, $tempohbayar) { DB::connection('mysql7')->transaction(function () use ($norujukan, $gadai, $kodcaw, $current, $baki_hargajualan, $cawangan, $old_data, $lelong_tawarruq, $margin_semasa, $bayaran, $tempohbayar, $bill_id) {
$transaction = Transaction::on('mysql7')->create([ $data = [
'trans_type' => 'A', 'trans_type' => 'A',
'norujukan' => $norujukan, 'norujukan' => $norujukan,
'nokp' => $gadai['nokp'], 'nokp' => $gadai['nokp'],
@@ -354,7 +361,14 @@ class TransactionOnlineController extends Controller
'duit_masuk' => $bayaran, 'duit_masuk' => $bayaran,
'created_at' => $current, 'created_at' => $current,
'bakiharga' => $baki_hargajualan, 'bakiharga' => $baki_hargajualan,
]); ];
try {
$transaction = Transaction::on('mysql7')->create($data);
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_UPDATE_TRANSACTION, $data, $transaction);
} catch (\Exception $e) {
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_UPDATE_TRANSACTION, $data, $e->getMessage());
}
if ($gadai['tempoh'] >= 12.0) { if ($gadai['tempoh'] >= 12.0) {
$tempoh = 12; $tempoh = 12;
@@ -368,7 +382,8 @@ class TransactionOnlineController extends Controller
$baki_bayaran = $bayaran - $upahsemasa; $baki_bayaran = $bayaran - $upahsemasa;
$upahsemasa = $this->kiraupahTawarruq($kodcaw, $norujukan, $tempohbayar); $upahsemasa = $this->kiraupahTawarruq($kodcaw, $norujukan, $tempohbayar);
$upahrebet = $this->kiraUpahRebet($kodcaw, $norujukan, $tempohbayar); $upahrebet = $this->kiraUpahRebet($kodcaw, $norujukan, $tempohbayar);
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create([
$dataTransactionUpah = [
'norujukan' => $norujukan, 'norujukan' => $norujukan,
'bayaran_keuntungan' => $upahsemasa, 'bayaran_keuntungan' => $upahsemasa,
'bayaran_pembiayaan' => $baki_bayaran, 'bayaran_pembiayaan' => $baki_bayaran,
@@ -382,7 +397,15 @@ class TransactionOnlineController extends Controller
'tempoh' => 0, 'tempoh' => 0,
'beza_tempoh' => 0, 'beza_tempoh' => 0,
'margin_semasa' => 0, 'margin_semasa' => 0,
]); ];
try {
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create($dataTransactionUpah);
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_UPDATE_TRANSAKSI_KEUNTUNGAN, $dataTransactionUpah, $transaction_upah);
} catch (\Exception $e) {
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_UPDATE_TRANSAKSI_KEUNTUNGAN, $dataTransactionUpah, $e->getMessage());
}
} else { } else {
$onepercent = new OnePercentServices(); $onepercent = new OnePercentServices();
@@ -404,7 +427,7 @@ class TransactionOnlineController extends Controller
$keun = $onepercent->getRoundedMethod($onepercentasal * $bilang_bln); $keun = $onepercent->getRoundedMethod($onepercentasal * $bilang_bln);
$keuntungan_rebate = $onepercent->getRoundedMethod($keuntungan['onepercent'] * $bilang_bln); $keuntungan_rebate = $onepercent->getRoundedMethod($keuntungan['onepercent'] * $bilang_bln);
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create([ $dataTransactionUpah = [
'norujukan' => $norujukan, 'norujukan' => $norujukan,
'bayaran_keuntungan' => $upahsemasa, 'bayaran_keuntungan' => $upahsemasa,
'bayaran_pembiayaan' => $baki_bayaran, 'bayaran_pembiayaan' => $baki_bayaran,
@@ -418,15 +441,22 @@ class TransactionOnlineController extends Controller
'tempoh' => $gadai['tempoh'], 'tempoh' => $gadai['tempoh'],
'beza_tempoh' => $bilang_bln, 'beza_tempoh' => $bilang_bln,
'margin_semasa' => $margin_semasa, 'margin_semasa' => $margin_semasa,
]); ];
try {
$transaction_upah = TransaksiKeuntungan::on('mysql7')->create($dataTransactionUpah);
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_UPDATE_TRANSAKSI_KEUNTUNGAN, $dataTransactionUpah, $transaction_upah);
} catch (\Exception $e) {
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_UPDATE_TRANSAKSI_KEUNTUNGAN, $dataTransactionUpah, $e->getMessage());
}
} }
$baki_pinjaman = $gadai['bakipjm'] - $baki_bayaran; $baki_pinjaman = $gadai['bakipjm'] - $baki_bayaran;
DB::connection($cawangan['mysql'])->transaction(function () use ($cawangan, $baki_pinjaman, $current, $norujukan, $gadai, $baki_hargajualan, $lelong_tawarruq, $margin_semasa) { DB::connection($cawangan['mysql'])->transaction(function () use ($cawangan, $baki_pinjaman, $current, $norujukan, $gadai, $baki_hargajualan, $lelong_tawarruq, $margin_semasa, $bill_id) {
$margin_updated = ($baki_pinjaman / $gadai['nilaimarhun']) * 100; $margin_updated = ($baki_pinjaman / $gadai['nilaimarhun']) * 100;
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan', '=', $norujukan)->update(array( $updateGadaiData = [
'bakipjm' => $baki_pinjaman, 'bakipjm' => $baki_pinjaman,
'jbg' => 0, 'jbg' => 0,
't_update' => $current->toDateString(), 't_update' => $current->toDateString(),
@@ -434,27 +464,41 @@ class TransactionOnlineController extends Controller
'tempohbayar' => $gadai['tempoh'], 'tempohbayar' => $gadai['tempoh'],
'lelong_tawarruq' => $lelong_tawarruq, 'lelong_tawarruq' => $lelong_tawarruq,
'margin_semasa' => $margin_updated, 'margin_semasa' => $margin_updated,
)); ];
try {
$update_gadai = Gadai::on($cawangan['mysql'])->where('norujukan', '=', $norujukan)->update($updateGadaiData);
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_UPDATE_GADAI, $updateGadaiData, $update_gadai);
} catch (\Exception $e) {
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_UPDATE_GADAI, $updateGadaiData, $e->getMessage());
}
}); });
$new_data = Gadai::on($cawangan['mysql'])->where('norujukan', '=', $norujukan)->first(); $new_data = Gadai::on($cawangan['mysql'])->where('norujukan', '=', $norujukan)->first();
$audit = new Audit(); $auditData = [
$audit->users = 'Online'; 'users' => 'Online',
$audit->actions = 'Bayaran Ansuran'; 'actions' => 'Bayaran Ansuran',
$audit->norujukan = $norujukan; 'norujukan' => $norujukan,
$audit->new_data = $new_data; 'new_data' => $new_data,
$audit->old_data = $old_data; 'old_data' => $old_data,
$audit->kodcaw = $kodcaw; 'kodcaw' => $kodcaw,
$audit->created_at = $current; 'created_at' => $current,
$audit->updated_at = $current; 'updated_at' => $current,
$audit->save(); ];
try {
$audit = Audit::create($auditData);
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_REGISTER_AUDIT, $auditData, $audit);
} catch (\Exception $e) {
OnlineTransactionLoggerService::logsAfterDBTransaction($bill_id, TransactionOnlineStatus::CRONJOB_REGISTER_AUDIT, $auditData, $e->getMessage());
}
if (!$transaction || !$transaction_upah) { if (!$transaction || !$transaction_upah) {
throw new \Exception('One of the database operations failed.'); throw new \Exception('One of the database operations failed.');
} }
DB::commit(); DB::commit();
}); });
} catch (\Exception $e) { } catch (\Exception $e) {
@@ -491,7 +535,7 @@ class TransactionOnlineController extends Controller
'nowakil' => 0, 'nowakil' => 0,
'hubungan' => 0, 'hubungan' => 0,
'status' => 0, 'status' => 0,
'historygadaian' => $norujukan 'historygadaian' => $norujukan,
]); ]);
return response()->json($create_advansur, 201); return response()->json($create_advansur, 201);
@@ -541,7 +585,7 @@ class TransactionOnlineController extends Controller
{ {
$transaction = TransactionOnline::on('mysql7')->where('billplz_id', '=', $request->billplz_id)->update(array( $transaction = TransactionOnline::on('mysql7')->where('billplz_id', '=', $request->billplz_id)->update(array(
'status' => $request->status, 'status' => $request->status,
'paid_at' => $request->paid_at 'paid_at' => $request->paid_at,
)); ));
return response()->json($transaction, 200); return response()->json($transaction, 200);
@@ -554,7 +598,6 @@ class TransactionOnlineController extends Controller
$gadai_all = []; $gadai_all = [];
$akanlelongarray = []; $akanlelongarray = [];
foreach ($cawangan_all as $index => $cawangan) { foreach ($cawangan_all as $index => $cawangan) {
$gadai = Gadai::on($cawangan['mysql']) $gadai = Gadai::on($cawangan['mysql'])
->where([['sttebus', '=', ''], ['taglel', 0], ['nokp', '=', $request->ic]]) ->where([['sttebus', '=', ''], ['taglel', 0], ['nokp', '=', $request->ic]])
@@ -571,7 +614,7 @@ class TransactionOnlineController extends Controller
} }
$array_utg = new \Illuminate\Http\Request([ $array_utg = new \Illuminate\Http\Request([
'jeniskeuntungan' => $jenis 'jeniskeuntungan' => $jenis,
]); ]);
$result = (new TebusController)->upahTawarruq($gad['kodcaw'], $gad['norujukan'], $array_utg); $result = (new TebusController)->upahTawarruq($gad['kodcaw'], $gad['norujukan'], $array_utg);
@@ -606,7 +649,7 @@ class TransactionOnlineController extends Controller
} }
$array_utg = new \Illuminate\Http\Request([ $array_utg = new \Illuminate\Http\Request([
'jeniskeuntungan' => $jenis 'jeniskeuntungan' => $jenis,
]); ]);
$result = (new TebusController)->kiraupahTawarruq($lelong['kodcaw'], $lelong['norujukan'], $array_utg); $result = (new TebusController)->kiraupahTawarruq($lelong['kodcaw'], $lelong['norujukan'], $array_utg);
@@ -619,7 +662,7 @@ class TransactionOnlineController extends Controller
return response()->json( return response()->json(
array( array(
'gadai' => $gadai_all, 'gadai' => $gadai_all,
'lelong' => $akanlelongarray 'lelong' => $akanlelongarray,
), ),
200 200
); );
@@ -628,7 +671,7 @@ class TransactionOnlineController extends Controller
public function updateTagPortal(Request $request) public function updateTagPortal(Request $request)
{ {
$transaction = TransactionOnline::on('mysql7')->where('billplz_id', '=', $request->billplz_id)->update(array( $transaction = TransactionOnline::on('mysql7')->where('billplz_id', '=', $request->billplz_id)->update(array(
'tagportal' => 1 'tagportal' => 1,
)); ));
return response()->json($transaction, 200); return response()->json($transaction, 200);
@@ -639,7 +682,7 @@ class TransactionOnlineController extends Controller
try { try {
$gadai = (new GadaiController())->showOneGadaibyRujukanAndCawangan($kodcaw, $norujukan) $gadai = (new GadaiController())->showOneGadaibyRujukanAndCawangan($kodcaw, $norujukan)
->getData()[0]; ->getData()[0];
$jenis_keuntungan = $gadai->tagbaru === 1 ? 'onepercent' : 'asal'; $jenis_keuntungan = $gadai->tagbaru === 1 ? 'onepercent' : 'asal';
@@ -650,8 +693,8 @@ class TransactionOnlineController extends Controller
$upah_rebet_tawarruq = (new TebusController())->upahRebetTawarruq($kodcaw, $norujukan, $request_upah_rebet_tawarruq); $upah_rebet_tawarruq = (new TebusController())->upahRebetTawarruq($kodcaw, $norujukan, $request_upah_rebet_tawarruq);
if ($jenis_keuntungan === 'onepercent') { if ($jenis_keuntungan === 'onepercent') {
$ujrah_sebenar = (float)$upah_tawarruq['ujrah']; $ujrah_sebenar = (float) $upah_tawarruq['ujrah'];
$ujrah_rebet = $ujrah_sebenar - (float)$upah_rebet_tawarruq['ujrah']; $ujrah_rebet = $ujrah_sebenar - (float) $upah_rebet_tawarruq['ujrah'];
return [ return [
'ujrah_sebenar' => $ujrah_sebenar, 'ujrah_sebenar' => $ujrah_sebenar,
@@ -660,29 +703,29 @@ class TransactionOnlineController extends Controller
} }
return [ return [
'ujrah_sebenar' => (float)$upah_tawarruq, 'ujrah_sebenar' => (float) $upah_tawarruq,
'ujrah_rebet' => (float)$upah_rebet_tawarruq, 'ujrah_rebet' => (float) $upah_rebet_tawarruq,
]; ];
} catch (\Throwable $th) { } catch (\Throwable $th) {
Log::error($th); Log::error($th);
return $th; return $th;
} }
} }
function getListTransactionOnlineTrail(Request $request) public function getListTransactionOnlineTrail(Request $request)
{ {
$date = $request->date ? $request->date : Carbon::now()->toDateString(); $date = $request->date ? $request->date : Carbon::now()->toDateString();
$isGroupByNorujukan = $request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1'; $isGroupByNorujukan = $request->filled('isGroupedByNorujukan') && $request->isGroupedByNorujukan === '1';
$transactionsOnline = TransactionOnline::whereDate('tarikh', $date) $transactionsOnline = TransactionOnline::whereDate('tarikh', $date)
->when($request->filled('norujukan'), function ($query) use($request) { ->when($request->filled('norujukan'), function ($query) use ($request) {
return $query->where('norujukan', $request->norujukan); return $query->where('norujukan', $request->norujukan);
}) })
->orderBy('tarikh', 'desc') ->orderBy('tarikh', 'desc')
->orderBy('masa', 'desc') ->orderBy('masa', 'desc')
->get() ->get()
->filter(fn ($x) => $x['status'] === 'PAID') ->filter(fn($x) => $x['status'] === 'PAID')
->when($isGroupByNorujukan, function ($query) { ->when($isGroupByNorujukan, function ($query) {
return $query->groupBy('norujukan')->sortKeysDesc(); return $query->groupBy('norujukan')->sortKeysDesc();
}) })
@@ -690,7 +733,7 @@ class TransactionOnlineController extends Controller
$transaction = Transaction::whereDate('created_at', $date) $transaction = Transaction::whereDate('created_at', $date)
->where('teller', 'Online') ->where('teller', 'Online')
->when($request->norujukan, function ($query) use($request) { ->when($request->norujukan, function ($query) use ($request) {
return $query->where('norujukan', $request->norujukan); return $query->where('norujukan', $request->norujukan);
}) })
->orderBy('created_at', 'desc') ->orderBy('created_at', 'desc')
@@ -701,7 +744,7 @@ class TransactionOnlineController extends Controller
->toArray(); ->toArray();
$transaksiKeuntungan = TransaksiKeuntungan::whereDate('tarikh_bayaran', $date) $transaksiKeuntungan = TransaksiKeuntungan::whereDate('tarikh_bayaran', $date)
->when($request->norujukan, function ($query) use($request) { ->when($request->norujukan, function ($query) use ($request) {
return $query->where('norujukan', $request->norujukan); return $query->where('norujukan', $request->norujukan);
}) })
->orderBy('tarikh_bayaran', 'desc') ->orderBy('tarikh_bayaran', 'desc')
@@ -720,17 +763,17 @@ class TransactionOnlineController extends Controller
->all(); ->all();
$connectionCawangan = Cawangan::on('mysql7')->whereIn('kodcaw', $cawanganTransactionOnline)->get()->pluck('mysql'); $connectionCawangan = Cawangan::on('mysql7')->whereIn('kodcaw', $cawanganTransactionOnline)->get()->pluck('mysql');
$glDetail = $connectionCawangan->map(fn ($x) => GlDetail::on($x)->where('teller', 'ONLINE')->whereDate('tarikh', $date)->get()) $glDetail = $connectionCawangan->map(fn($x) => GlDetail::on($x)->where('teller', 'ONLINE')->whereDate('tarikh', $date)->get())
->flatten() ->flatten()
->when($isGroupByNorujukan, function ($glDetail) { ->when($isGroupByNorujukan, function ($glDetail) {
return $glDetail->groupBy('descpt') return $glDetail->groupBy('descpt')
->keyBy(function ($group, $key) { ->keyBy(function ($group, $key) {
$array = explode(' ', $key); $array = explode(' ', $key);
return end($array); return end($array);
}); });
}) })
->when($request->filled('norujukan'), function ($glDetail) use($request) { ->when($request->filled('norujukan'), function ($glDetail) use ($request) {
return $glDetail->filter(fn($x) => strpos($x->descpt, $request->norujukan) !== false); return $glDetail->filter(fn($x) => strpos($x->descpt, $request->norujukan) !== false);
}) })
->sortKeysDesc() ->sortKeysDesc()
@@ -740,7 +783,7 @@ class TransactionOnlineController extends Controller
'transactionsOnline' => $transactionsOnline, 'transactionsOnline' => $transactionsOnline,
'transaction' => $transaction, 'transaction' => $transaction,
'transaksiKeuntungan' => $transaksiKeuntungan, 'transaksiKeuntungan' => $transaksiKeuntungan,
'glDetail' => $glDetail 'glDetail' => $glDetail,
]); ]);
} }
} }
@@ -0,0 +1,33 @@
<?php
namespace App\Http\Controllers;
use App\Services\Loggers\OnlineTransactionLoggerService;
use App\TransactionOnlineLog;
use App\TransactionOnlineStatus;
use Illuminate\Http\Request;
class TransactionOnlineLogController extends Controller
{
public function create(Request $request)
{
$log = OnlineTransactionLoggerService::logs($request);
return response()->json($log, 201);
}
public function index(Request $request)
{
$transactionOnlineLogs = TransactionOnlineLog::query()
->when($request->filled('date'), function ($query) use ($request) {
return $query->whereDate('created_at', $request->date);
})
->get()
->map(function ($x) {
$x->status_label = TransactionOnlineStatus::statusLabel($x->status);
return $x;
});
return response()->json($transactionOnlineLogs, 200);
}
}
@@ -0,0 +1,40 @@
<?php
namespace App\Services\Loggers;
use App\TransactionOnlineLog;
class OnlineTransactionLoggerService
{
public static function logs($request)
{
$log = TransactionOnlineLog::create([
'bill_id' => $request->bill_id,
'status' => $request->status,
'payload' => $request->payload,
'response' => $request->response,
]);
return $log;
}
public static function logsAfterDBTransaction($bill_id, $status, $request, $response)
{
$formatToString = function ($data) {
if (is_array($data) || is_object($data)) {
return json_encode($data);
}
return $data;
};
$log = TransactionOnlineLog::create([
'bill_id' => $formatToString($bill_id),
'status' => $formatToString($status),
'payload' => $formatToString($request),
'response' => $formatToString($response),
]);
return $log;
}
}
+20
View File
@@ -0,0 +1,20 @@
<?php
namespace App;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
class TransactionOnlineLog extends Model
{
protected $table = 'log_transaction_online';
protected $guarded = [];
public function getCreatedAtAttribute($value)
{
$value = Carbon::parse($value);
return $value ? $value->format('d/m/Y H:i:s') : null;
}
}
+46
View File
@@ -0,0 +1,46 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class TransactionOnlineStatus extends Model
{
const BILL_CREATED = 1;
const INITIALIZED_TRANSACTION = 2;
const UPDATED_TAG_PORTAL = 3;
const UPDATE_TRANSACTION_CALLBACK = 4;
const UPDATE_TRANSACTION_REDIRECT = 5;
const CRONJOB_UPDATE_TRANSACTION = 6;
const CRONJOB_UPDATE_TRANSAKSI_KEUNTUNGAN = 7;
const CRONJOB_UPDATE_GADAI = 8;
const CRONJOB_REGISTER_AUDIT = 9;
const CRONJOB_REGISTER_GLDETAIL = 10;
const CRONJOB_UPDATE_TRANSAKSI_ONLINE = 11;
public static function listStatus()
{
return [
self::BILL_CREATED => 'Bill Created',
self::INITIALIZED_TRANSACTION => 'Initialized Transaction',
self::UPDATED_TAG_PORTAL => 'Updated Tag Portal',
self::UPDATE_TRANSACTION_CALLBACK => 'Update Transaction Callback',
self::UPDATE_TRANSACTION_REDIRECT => 'Update Transaction Redirect',
self::CRONJOB_UPDATE_TRANSACTION => 'Cronjob Update Transaction',
self::CRONJOB_UPDATE_TRANSAKSI_KEUNTUNGAN => 'Cronjob Update Transaksi Keuntungan',
self::CRONJOB_UPDATE_GADAI => 'Cronjob Update Gadai',
self::CRONJOB_REGISTER_AUDIT => 'Cronjob Register Audit',
self::CRONJOB_REGISTER_GLDETAIL => 'Cronjob Register GlDetail',
self::CRONJOB_UPDATE_TRANSAKSI_ONLINE => 'Cronjob Update Transaksi Online',
];
}
public static function statusLabel($status_code)
{
$list = self::listStatus();
return isset($list[$status_code])
? $list[$status_code]
: $status_code;
}
}
@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTransactionOnlineLogs extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('log_transaction_online', function (Blueprint $table) {
$table->id();
$table->string('bill_id');
$table->unsignedInteger('status');
$table->string('payload', 10000);
$table->string('response', 10000);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('log_transaction_online');
}
}
+2
View File
@@ -262,6 +262,8 @@ $router->group(['prefix'=>'api'], function () use ($router){
$router->put('transaction/online/tagportal',['uses'=>'TransactionOnlineController@updateTagPortal']); $router->put('transaction/online/tagportal',['uses'=>'TransactionOnlineController@updateTagPortal']);
$router->get('transaction/online/query',['uses'=>'TransactionOnlineController@getListTransactionOnlineQuery']); $router->get('transaction/online/query',['uses'=>'TransactionOnlineController@getListTransactionOnlineQuery']);
$router->get('transaction/online/trail',['uses'=>'TransactionOnlineController@getListTransactionOnlineTrail']); $router->get('transaction/online/trail',['uses'=>'TransactionOnlineController@getListTransactionOnlineTrail']);
$router->get('transaction/online/log',['uses'=>'TransactionOnlineLogController@index']);
$router->post('transaction/online/log',['uses'=>'TransactionOnlineLogController@create']);
//ANSURAN UPAH API //ANSURAN UPAH API
$router->get('ansuran/laporan/{kodcaw}',['uses'=>'GadaiController@getLaporanAnsuran']); $router->get('ansuran/laporan/{kodcaw}',['uses'=>'GadaiController@getLaporanAnsuran']);