Load pembiayaan detail modal whenever user clicks. not loaded it all at page startup

This commit is contained in:
Afiq Hamzah
2024-09-13 16:44:05 +08:00
parent ae117988df
commit 5bd7943ff4
7 changed files with 63 additions and 91 deletions
+7 -15
View File
@@ -8,23 +8,15 @@ use Illuminate\Support\Facades\Http;
class BayaranHistoryService class BayaranHistoryService
{ {
public $norujukanList; public $norujukan;
public function __construct($norujukanList) { public function __construct($norujukan) {
$this->norujukanList = $norujukanList; $this->norujukan = $norujukan;
} }
public function getBayaranHistory() public function getBayaranHistory()
{ {
$getBayaranHistory = function () { $bayaranHistory = Http::arrahn()->get('/api/transaction/online/query', ['date' => $this->norujukan])->json();
return Http::pool(function (Pool $pool){
foreach ($this->norujukanList as $norujukan) {
$pool->get(config('api.url') . '/api/transaction/' . $norujukan);
}
});
};
$bayaranHistoryResponse = array_map(fn($x) => $x->json(), $getBayaranHistory());
$formatBayaranHistoryData = function ($x) { $formatBayaranHistoryData = function ($x) {
if (sizeof($x) === 0) { if (sizeof($x) === 0) {
@@ -41,12 +33,12 @@ class BayaranHistoryService
}, $x); }, $x);
}; };
return array_map($formatBayaranHistoryData, $bayaranHistoryResponse); return $formatBayaranHistoryData($bayaranHistory);
} }
public static function from($norujukanList) public static function from($norujukan)
{ {
return new static($norujukanList); return new static($norujukan);
} }
} }
+9 -9
View File
@@ -6,10 +6,10 @@ use Illuminate\Support\Facades\Http;
class MarhunService class MarhunService
{ {
public $norujukanList; public $norujukan;
public function __construct($norujukanList) { public function __construct($norujukan) {
$this->norujukanList = $norujukanList; $this->norujukan = $norujukan;
} }
public function getMarhunDetails() public function getMarhunDetails()
@@ -30,18 +30,18 @@ class MarhunService
}; };
$marhunDetailPipelines = [ $marhunDetailPipelines = [
fn($x) => array_map($getMarhunDetails, $x), fn($x) => $getMarhunDetails($x),
fn($x) => array_map(fn($y) => $x == null ? [] : $y, $x), fn($x) => $x == null ? [] : $x,
fn($x) => array_map(fn($y) => array_merge([], ...$y), $x), fn($x) => array_map(fn($y) => array_merge([], ...$y), $x),
fn($x) => array_map($formatMarhunDetailData, $x), fn($x) => $formatMarhunDetailData($x),
]; ];
return array_reduce($marhunDetailPipelines, fn($x, $y) => $y($x), $this->norujukanList); return array_reduce($marhunDetailPipelines, fn($x, $y) => $y($x), $this->norujukan);
} }
public static function from($norujukanList) public static function from($norujukan)
{ {
return new static($norujukanList); return new static($norujukan);
} }
} }
+20 -44
View File
@@ -25,7 +25,6 @@ class PembiayaanService
$pembiayaan = array_filter($getPembiayaan(), fn($x) => $x->hargajualan != null || $x->hargajualan != 0); $pembiayaan = array_filter($getPembiayaan(), fn($x) => $x->hargajualan != null || $x->hargajualan != 0);
$pembiayaan = $this->setUpahTawarruq($pembiayaan); $pembiayaan = $this->setUpahTawarruq($pembiayaan);
$pembiayaan = $this->formatPembiayaanData($pembiayaan); $pembiayaan = $this->formatPembiayaanData($pembiayaan);
$pembiayaan = $this->attachMarhunModalData($pembiayaan);
$pembiayaan = $this->checkPembiayaanPaymentDisabled($pembiayaan); $pembiayaan = $this->checkPembiayaanPaymentDisabled($pembiayaan);
return $pembiayaan; return $pembiayaan;
@@ -101,51 +100,28 @@ class PembiayaanService
return $formatted; return $formatted;
} }
private function attachMarhunModalData($pembiayaan) public function getMarhunModalData($norujukan)
{ {
$marhunModalData = $this->getMarhunModalData($pembiayaan);
return array_map(
function ($x, $y) {
$x->marhunModalData = $y;
return $x;
},
$pembiayaan,
$marhunModalData,
);
}
public function getMarhunModalData($pembiayaan)
{
$norujukanList = array_map(fn($x) => $x->norujukan, $pembiayaan);
$marhunDetails = MarhunService::from($norujukanList)->getMarhunDetails();
$bayaranHistoryDetails = BayaranHistoryService::from($norujukanList)->getBayaranHistory();
return array_map(
fn($x, $y, $z) => [
'nilaimarhun' => $x->nilaimarhun,
'berat' => $x->berat,
'bakiupah' => $x->bakiupah,
'pinjaman' => $x->pinjaman,
'bakipjm' => $x->bakipjm,
'taglel' => $x->taglel,
'marhun' => $x->marhun,
'pinjaman' => $x->pinjaman,
'norujukan' => $x->norujukan,
'hargajualan' => $x->hargajualan,
'kodcaw' => $x->kodcaw,
'tempoh' => $x->tempoh,
'cawangan_name' => $x->cawangan_name,
'marhun_details' => $y,
'bayaran_history' => $z,
],
$pembiayaan,
$marhunDetails,
$bayaranHistoryDetails,
);
$gadaianDetails = Http::arrahn()->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'];
return $x;
};
$gadaianDetails = $attachCawanganName($gadaianDetails);
$marhunDetails = MarhunService::from($norujukan)->getMarhunDetails();
$bayaranHistoryDetails = BayaranHistoryService::from($norujukan)->getBayaranHistory();
return [
'gadaianDetails' => $gadaianDetails,
'marhunDetails' => $marhunDetails,
'bayaranHistoryDetails' => $bayaranHistoryDetails,
];
} }
private function getNorujukanRecentlyAttemptPayment($norujukanList) private function getNorujukanRecentlyAttemptPayment($norujukanList)
@@ -18,8 +18,7 @@
</td> </td>
<td> <td>
<a href="#" class="marhun-detail-link"> <a href="#" class="marhun-detail-link">
<span class="text-sm text-info" <span class="text-sm text-info">{{ $data->norujukan }}</span>
data-marhun-modal="{{ json_encode($data->marhunModalData) }}">{{ $data->norujukan }}</span>
</a> </a>
</td> </td>
<td>{{ $data->t_lelong_formatted }}</td> <td>{{ $data->t_lelong_formatted }}</td>
@@ -20,8 +20,7 @@
</td> </td>
<td> <td>
<a href="#" class="marhun-detail-link"> <a href="#" class="marhun-detail-link">
<span class="text-sm text-info" <span class="text-sm text-info">{{ $data->norujukan }}</span>
data-marhun-modal="{{ json_encode($data->marhunModalData) }}">{{ $data->norujukan }}</span>
</a> </a>
</td> </td>
<td class="hide-xs">{{ $data->tempoh }}</td> <td class="hide-xs">{{ $data->tempoh }}</td>
+22 -19
View File
@@ -169,30 +169,33 @@
@push('additional_js_scripts') @push('additional_js_scripts')
<script> <script>
const showMarhunDetailModal = function(event) { const showMarhunDetailModal = async function(event) {
event.preventDefault(); event.preventDefault();
const norujukan = event.target.innerHTML;
const data = await fetch('/api/pembiayaan-modal-data/' + norujukan).then(x => x.json());
const formatter = new Intl.NumberFormat('en-US', { const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2 minimumFractionDigits: 2
}); });
let data = JSON.parse(event.target.dataset.marhunModal); $('#pembiayaan').text('RM' + formatter.format(data.gadaianDetails.pinjaman));
$('#bpembiayaan').text('RM' + formatter.format(data.gadaianDetails.bakipjm));
$('#pembiayaan').text('RM' + formatter.format(data.pinjaman)); $('#nm').text('RM' + formatter.format(data.gadaianDetails.nilaimarhun));
$('#bpembiayaan').text('RM' + formatter.format(data.bakipjm)); $('#berat').text(data.gadaianDetails.berat + 'g');
$('#nm').text('RM' + formatter.format(data.nilaimarhun)); $('#koskeun').text('RM' + formatter.format(data.gadaianDetails.bakiupah));
$('#berat').text(data.berat + 'g'); $('#norujukan').text(data.gadaianDetails.norujukan);
$('#koskeun').text('RM' + formatter.format(data.bakiupah)); $('#tempoh').text(data.gadaianDetails.tempoh);
$('#norujukan').text(data.norujukan); $('#namacaw').text(data.gadaianDetails.cawangan_name);
$('#tempoh').text(data.tempoh); $('#pemb').text('RM ' + data.gadaianDetails.pinjaman);
$('#namacaw').text(data.cawangan_name); $('#bpemb').text('RM ' + data.gadaianDetails.bakipjm);
$('#pemb').text('RM ' + data.pinjaman); $('#statuslelong').text(data.gadaianDetails.taglel === 1 ? 'Akan Dilelong' : '-');
$('#bpemb').text('RM ' + data.bakipjm); $('#norujukan_modal').val(data.gadaianDetails.norujukan);
$('#statuslelong').text(data.taglel === 1 ? 'Akan Dilelong' : '-'); $('#pinjaman_modal').val(data.gadaianDetails.pinjaman);
$('#norujukan_modal').val(data.norujukan);
$('#pinjaman_modal').val(data.pinjaman);
$('#marhunModal').modal('show'); $('#marhunModal').modal('show');
$('#tablehistorybayaran').DataTable().clear().destroy(); $('#tablehistorybayaran').DataTable().clear().destroy();
let table_bayaran_history = $('#tablehistorybayaran').DataTable(); let table_bayaran_history = $('#tablehistorybayaran').DataTable();
@@ -200,7 +203,7 @@
$('#biasa').DataTable().clear().destroy(); $('#biasa').DataTable().clear().destroy();
let table_marhun = $('#biasa').DataTable(); let table_marhun = $('#biasa').DataTable();
data.bayaran_history.forEach((x, index) => { data.bayaranHistoryDetails.forEach((x, index) => {
table_bayaran_history.row.add([ table_bayaran_history.row.add([
index + 1, index + 1,
x.created_at, x.created_at,
@@ -208,7 +211,7 @@
]).draw(false) ]).draw(false)
}); });
data.marhun_details.forEach((x, index) => { data.marhunDetails.forEach((x, index) => {
table_marhun.row.add([ table_marhun.row.add([
index + 1, index + 1,
x.marhun, x.marhun,
+3
View File
@@ -4,6 +4,7 @@ use App\Http\Controllers\BillplzTransactionReviewController;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use App\Http\Controllers\BillplzController; use App\Http\Controllers\BillplzController;
use App\Services\PembiayaanService;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@@ -23,3 +24,5 @@ Route::middleware('auth:api')->get('/user', function (Request $request) {
Route::get('/billplz', BillplzController::class); Route::get('/billplz', BillplzController::class);
Route::get('/billplz-transaction-review', [BillplzTransactionReviewController::class, 'index']); Route::get('/billplz-transaction-review', [BillplzTransactionReviewController::class, 'index']);
Route::get('/billplz-transaction-review/{bill_id}', [BillplzTransactionReviewController::class, 'show']); Route::get('/billplz-transaction-review/{bill_id}', [BillplzTransactionReviewController::class, 'show']);
Route::get('/pembiayaan-modal-data/{norujukan}', [PembiayaanService::class, 'getMarhunModalData']);