merged main to feature split

This commit is contained in:
Hafifie PKB
2025-01-20 15:32:40 +08:00
40 changed files with 1407 additions and 329 deletions
@@ -181,7 +181,7 @@
<!-- Control Center for Material UI Kit: parallax effects, scripts for the example pages etc -->
<!-- Google Maps Plugin -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTTfWur0PDbZWPr7Pmq8K3jiDp0_xUziI"></script>
{{-- <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTTfWur0PDbZWPr7Pmq8K3jiDp0_xUziI"></script> --}}
<!-- <script src="{{ asset('assets/js/material-kit/material-kit.min.js?v=3.0.0') }}" type="text/javascript"></script> -->
<script>
@@ -10,10 +10,90 @@
.card-header {
padding: 1rem !important;
}
.blurred {
filter: blur(2px); /* Apply a blur effect */
opacity: 0.5; /* Slight transparency */
/*pointer-events: none; */
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type="number"] {
-moz-appearance: textfield;
}
@media (max-width: 768px) { /* Target screens smaller than tablets */
.sticky-footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background-color: white; /* Adjust to match your theme */
height:100px;
box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1); /* Optional shadow for better visibility */
padding: 10px; /* Add some padding for spacing */
z-index: 1000; /* Ensure it stays above other content */
text-align: center; /* Center align buttons */
}
.sticky-footer .btn {
width: 45%; /* Ensure buttons fit well side-by-side */
margin: 0 5px; /* Add spacing between buttons */
}
.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;
}
}
</style>
<script>let redirect_home_var="{{ route('buffer') }}";</script>
<title>Bayar SAG | Portal Pelanggan</title>
<div class="container">
<div>
<div id="load-arrahn" class="d-none">
<div class="overlay-arrahn"></div>
<div class="loader-arrahn text-center">
<img src="{{ asset('argon/img/brand/ar-rahn-take-2.gif') }}">
</div>
</div>
<form name="formpayment" method="post" action="{{ route('payment.engine') }}">
@csrf
@@ -27,46 +107,38 @@
</div>
<div class="row justify-content-center">
<div class="col-md-10 col-sm-12">
<div class="d-md-flex">
<div class="col-sm-12 col-md-9">
@if($list_pkb)
<div class="col-md-11 col-sm-12 mb-4" id="divpkb">
<div class="card shadow">
<div class="card-header mb-4 bg-dark border-0">
<div class="card-header mb-4 bg-dark border-0" onclick="document.getElementById('pkb').click()">
<div class="row align-items-center">
<div class="d-flex">
<h4 class="text-white" style="margin-right: 1%;">Pembayaran</h4>
<i class="fas fa-clipboard-list fa-2x text-white"></i>
<h4 class="text-white" style="margin-right: 1%;">PKB</h4>
<div class="ms-auto">
<small class="text-white mr-2 font-weight-bold d-none d-md-inline">*sila tick di sini untuk memilih bayaran.</small>
<input type="radio" id="pkb" name="radpembayaran" value="pkb" class="ms-auto" style="width: 30px; height: 30px;" />
</div>
</div>
</div>
</div>
<div class="form">
<div style="overflow-x: auto;">
<table class="table align-items-left" id="selepas_tawarruq" style="width: 100%;">
<thead class="thead-light">
<!-- <div style="margin-bottom: 15px; text-align: left;">
<i class="text-danger" style="font-size:12px;">Klik 'Klik Di Sini' untuk Pilihan Bayaran</i><br>
<i class="text-danger" style="font-size:12px;">Amaun Semasa -> Amaun Keuntungan Semasa Sahaja.</i><br>
<i class="text-danger" style="font-size:12px;">Amaun Lain -> Amaun Ansuran Pembiayaan & Amaun Keuntungan Semasa, Sila Masukkan Amaun</i>
</div> -->
<tr style="text-align: center;">
<!-- <th width="10%">No</th> -->
<th width="10%">No <br>Rujukan</th>
<th width="10%">No Rujukan</th>
<th width="10%">Tarikh Akhir</th>
<th width="10%">Bayaran</th>
<th width="10%">Baki <br>Pembiayaan</th>
<!-- <th width="10%">Pembiayaan Asal</th>
<th width="10%">Tempoh</th> -->
<th width="10%">Baki Pembiayaan</th>
</tr>
</thead>
@php $counter = 1;$jenisbayaran = 'tawarruq'; $totalupahasal = 1; $errorcount = 0; @endphp
@foreach($arraybayar as $index=>$bayar)
@foreach($list_pkb as $index=>$bayar)
@if($bayar['hargajualan'] != '')
<tbody class="list" style="text-align: center;">
<tr>
<!-- <td>
{{ $counter }}
</td> -->
<td>
{{ $bayar['norujukan'] }}
</td>
@@ -96,38 +168,17 @@
}
@endphp
<!-- <td>
<select name="sltbayaran" value="{{ old('sltbayaran') ? old('sltbayaran') : '' }}" class="form-control mb-2" data-upah="{{ $upahtawarruq }}" data-jenis="tawarruq" style="text-align: center; border: revert;">
<option selected disabled></option>
<option value="fixed">Amaun Semasa</option>
<option value="otheramount">Amaun Lain</option>
</select>
<input type="text" value="{{ old('txtbayarantawarruq') ? old('txtbayarantawarruq') : '' }}" data-bakipjm="{{ $bayar['bakipjm'] }}" data-taglel="{{ $bayar['taglel'] }}" data-upah="{{ $upahtawarruq }}" data-nm="{{ $bayar['nilaimarhun'] }}" data-jenis="tawarruq" name="txtbayarantawarruq" class="form-control txtbayaran" style="text-align: center; border: outset;" />
<input type="hidden" name="txtbayaranhidden[]" class="bayaran" style="text-align: center;" />
<input type="hidden" name="txtjenisbayaran[]" value="{{ $jenisbayaran }}" style="text-align: center;" />
<input type="hidden" name="txtnorujukanhidden[]" value="{{ $bayar['norujukan'] }}" style="text-align: center;" />
<input type="hidden" name="txtkodcawhidden[]" value="{{ $bayar['kodcaw'] }}" style="text-align: center;" />
</td>-->
<td><input name="txtbayarantawarruq" type="number" step="0.01" value="{{ sprintf('%0.2f', $upahtawarruq) }}" class="form-control" style="text-align: center; border: outset;" data-bakipjm="{{ $bayar['bakipjm'] }}" data-upah="{{ $upahtawarruq }}" data-nm="{{ $bayar['nilaimarhun'] }}" data-taglel="{{ $bayar['taglel'] }}">
<td><input name="txtbayarantawarruq" type="number" step="0.01" value="{{ sprintf('%0.2f', $upahtawarruq) }}" class="form-control" style="text-align: center; border: outset; -moz-appearance: textfield;-webkit-appearance: none;appearance: none;" data-bakipjm="{{ $bayar['bakipjm'] }}" data-upah="{{ $upahtawarruq }}" data-nm="{{ $bayar['nilaimarhun'] }}" data-taglel="{{ $bayar['taglel'] }}">
<input type="hidden" name="txtbayaranhidden[]" value="{{ $upahtawarruq }}" class="bayaran" style="text-align: center;" />
<input type="hidden" name="txtjenisbayaran[]" value="{{ $jenisbayaran }}" style="text-align: center;" />
<input type="hidden" name="txtnorujukanhidden[]" value="{{ $bayar['norujukan'] }}" style="text-align: center;" />
<input type="hidden" name="txtkodcawhidden[]" value="{{ $bayar['kodcaw'] }}" style="text-align: center;" />
<input type="hidden" name="txtcompany" value="pkb"/>
</td>
<td>
<input style="border: none; text-align: center;" type="text" value="{{ number_format($bayar['bakipjm'],2) }}" class="bakibaru" readonly>
</td>
<!-- <td>
{{ number_format($bayar['pinjaman'],2) }}
</td>
<td>
{{ $bayar['tempoh'] }}
</td> -->
</tr>
</tbody>
@php $counter++; @endphp
@@ -138,52 +189,190 @@
</div>
</div>
<div class="row pb-4 font-weight-light">
<div class="col-6">
<label style="text-transform: uppercase; text-align: center;"><strong>Fi Pengurusan</strong></label>
</div>
<div class="col-6">
<span class="text-primary"><strong>RM<span>1.00</span></strong></span>
<span class="text-danger d-none" id="spanamarankosong">*Jangan biarkan kotak bayaran ditinggalkan kosong, Sila masukkan amaun!</span>
</div>
</div>
@endif
@if($list_koop)
<div class="col-md-11 col-sm-12" id="divkopkb">
<div class="card shadow">
<div class="card-header mb-4 bg-dark border-0" onclick="document.getElementById('kopkb').click()">
<div class="row align-items-center">
<div class="d-flex">
<h4 class="text-white" style="margin-right: 1%;">KOPKB</h4>
<div class="ms-auto">
<small class="text-white mr-2 font-weight-bold d-none d-md-inline">*sila tick di sini untuk memilih bayaran.</small>
<input type="radio" id="kopkb" name="radpembayaran" value="kopkb" class="ms-auto" style="width: 30px; height: 30px;" />
</div>
</div>
</div>
</div>
<div class="row pb-4 font-weight-light">
<div class="col-6">
<label style="text-transform: uppercase; text-align: center;"><strong>Jumlah Keseluruhan</strong></label>
<div class="form">
<div style="overflow-x: auto;">
<table class="table align-items-left" id="selepas_tawarruq_koop" style="width: 100%;">
<thead class="thead-light">
<tr style="text-align: center;">
<th width="10%">No <br>Rujukan</th>
<th width="10%">Tarikh Akhir</th>
<th width="10%">Bayaran</th>
<th width="10%">Baki <br>Pembiayaan</th>
</tr>
</thead>
@php $counter = 1;$jenisbayaran = 'tawarruq'; $totalupahasal = 1; $errorcount = 0; @endphp
@foreach($list_koop as $index=>$bayar)
@if($bayar['hargajualan'] != '')
<tbody class="list" style="text-align: center;">
<tr>
<td>
{{ $bayar['norujukan'] }}
</td>
@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
<td>
{{ $t_akhir }}
</td>
@php
$upahtawarruq = $bayar['upah_tawarruq'];
$upahtawarruq = floatval(str_replace(',','',$upahtawarruq));
$totalupahasal = $totalupahasal + $upahtawarruq;
if(floatval($upahtawarruq) == 0){
$errorcount++;
}
@endphp
<td><input name="txtbayarantawarruq" type="number" step="0.01" value="{{ sprintf('%0.2f', $upahtawarruq) }}" class="form-control" style="text-align: center; border: outset;" data-bakipjm="{{ $bayar['bakipjm'] }}" data-upah="{{ $upahtawarruq }}" data-nm="{{ $bayar['nilaimarhun'] }}" data-taglel="{{ $bayar['taglel'] }}">
<input type="hidden" name="txtbayaranhidden[]" value="{{ $upahtawarruq }}" class="bayaran" style="text-align: center;" />
<input type="hidden" name="txtjenisbayaran[]" value="{{ $jenisbayaran }}" style="text-align: center;" />
<input type="hidden" name="txtnorujukanhidden[]" value="{{ $bayar['norujukan'] }}" style="text-align: center;" />
<input type="hidden" name="txtkodcawhidden[]" value="{{ $bayar['kodcaw'] }}" style="text-align: center;" />
<input type="hidden" name="txtcompany" value="kopkb"/>
</td>
<td>
<input style="border: none; text-align: center;" type="text" value="{{ number_format($bayar['bakipjm'],2) }}" class="bakibaru" readonly>
</td>
</tr>
</tbody>
@php $counter++; @endphp
@endif
@endforeach
</table>
<hr>
</div>
<div class="col-6">
<span class="text-primary"><strong>RM<span id="spanjumlah">{{ number_format($totalupahasal,2) }}</span></strong></span>
</div>
</div>
<span class="text-danger d-none" id="spanamarankosong">*Jangan biarkan kotak bayaran ditinggalkan kosong, Sila masukkan amaun!</span>
</div>
</div>
@endif
<div class="col-md-10 col-sm-12">
</div>
<div class="d-none d-sm-none d-md-block col-xl-3">
<div class="col-md-12">
<div class="card shadow">
<div class="form" style="text-align: center;">
<div class="card-header mb-4 bg-dark border-0">
<div class="row align-items-center">
<div class="d-flex">
<h4 class="text-white" style="margin-right: 1%;">Pembayaran</h4>
<i class="ms-auto fas fa-shopping-cart fa-2x text-white"></i>
</div>
</div>
</div>
<div class="card-body">
<div class="row pb-4 font-weight-light">
<div class="col-8">
<label style="text-transform: uppercase; text-align: center;"><strong>Fi Pengurusan</strong></label>
</div>
<div class="col-4">
<span class="text-primary"><strong>RM<span>1.00</span></strong></span>
</div>
</div>
<div class="row pb-4 font-weight-light">
<div class="col-8">
<label style="text-transform: uppercase; text-align: center;"><strong>Jumlah Keseluruhan</strong></label>
</div>
<div class="col-4">
<span class="text-primary"><strong>RM<span id="spanjumlah">1.00</span></strong></span>
</div>
</div>
</div>
</div>
<!-- <div class="d-flex justify-content-between col-12 mt-3 align-self-end"> -->
<div class="d-flex justify-content-center col-12 mt-3 align-self-end">
<a href="{{ route('home') }}" type="button" class="btn btn-danger">Batal</a>&nbsp;
<!-- <button type="submit" id="bayarsbmt" class="btn btn-primary" disabled onclick="loadingbtn();">Bayar</button> -->
@if($totalupahasal == 1.00 || $errorcount > 0)
<button type="submit" id="bayarsbmt" class="btn btn-primary" disabled onclick="loadingbtn();">Bayar</button>
@else
<button type="submit" id="bayarsbmt" class="btn btn-primary" onclick="loadingbtn();">Bayar</button>
@endif
<div class="col-md-12 col-sm-12">
<div class="card shadow">
<div class="form" style="text-align: center;">
</div>
</div>
<!-- <div class="d-flex justify-content-between col-12 mt-3 align-self-end"> -->
<div class="d-flex justify-content-center col-12 mt-3 align-self-end">
<a onclick="deleteCarts()" type="button" class="cursor-pointer btn btn-danger">Batal</a>&nbsp;
<!-- <button type="submit" id="bayarsbmt" class="btn btn-primary" disabled onclick="loadingbtn();">Bayar</button> -->
@if($totalupahasal == 1.00 || $errorcount > 0)
<button type="submit" id="bayarsbmt" class="btn btn-primary" disabled onclick="loadingbtn();">Bayar</button>
@else
<button type="submit" id="bayarsbmt" class="btn btn-primary" onclick="loadingbtn();">Bayar</button>
@endif
</div>
</div>
</div>
</div>
</div>
<small>*sila klik bayar untuk transaksi bayaran berikutnya.</small>
<!-- Sticky Footer for Mobile View -->
<div class="sticky-footer d-sm-block d-md-none">
<div>
<div class="d-sm-flex">
<div class="font-weight-light small d-flex">
<div class="col-3">
<label style="text-transform: uppercase; text-align: center;font-size: 10px;"><strong>Fi Pengurusan</strong></label>
</div>
<div class="col-3">
<span class="text-primary"><strong>RM<span>1.00</span></strong></span>
</div>
<div class="col-3">
<label style="text-transform: uppercase; text-align: center;font-size: 10px;"><strong>Jumlah Keseluruhan</strong></label>
</div>
<div class="col-3">
<span class="text-primary"><strong>RM<span id="spanjumlah-phone">1.00</span></strong></span>
</div>
</div>
</div>
</div>
<div class="">
<a href="{{ route('home') }}" type="button" class="btn btn-danger">Batal</a>
@if($totalupahasal == 1.00 || $errorcount > 0)
<button type="submit" id="bayarsbmt-phone" class="btn btn-primary" disabled onclick="loadingbtn();">Bayar</button>
@else
<button type="submit" id="bayarsbmt-phone" class="btn btn-primary" onclick="loadingbtn();">Bayar</button>
@endif
</div>
</div>
</form>
</div>
<script src="{{ asset('js/miscellaneous/cart.js') }}"></script>
<script>
$(document).ready(function() {
$(window).keydown(function(event) {
@@ -197,7 +386,7 @@
$('#selepas_tawarruq > tbody > tr').each(function() {
$(this).find("td:gt(0)").each(function() {
// console.log($(this).html());
console.log($("input[name=txtbayarantawarruq]").val());
// console.log($("input[name=txtbayarantawarruq]").val());
});
});
});
@@ -235,6 +424,23 @@
"pagingType": "simple",
"paging": false
});
var selepastawarruq_kooptable = $('#selepas_tawarruq_koop').DataTable({
"bLengthChange": false,
"bFilter": false,
"bInfo": false,
language: {
'paginate': {
'previous': '<span class="fas fa-backward"></span>',
'next': '<span class="fas fa-forward"></span>'
}
},
"scrollX": true,
"pageLength": 10,
"pagingType": "simple",
"paging": false
});
// var selepastawarruqtable = $('#ringkasan_bayaran').DataTable({
// "bLengthChange": false,
@@ -270,37 +476,6 @@
}
});
$("input[name=txtbayaranarrahn]").change(function(e) {
let upah = $(this).data('upah');
let pinjaman = $(this).data('pinjaman');
let jenis = $(this).data('jenis');
let nm = $(this).data('nm');
let taglel = $(this).data('taglel');
let bayar = Number(this.value);
let errorlebih = nm - (nm * 0.1);
if (bayar > parseFloat(errorlebih)) {
$("#bayarsbmt").prop('disabled', false);
Swal.fire(
'Amaran!',
'Baki Pembiayaan tidak boleh kurang 10% daripada Nilai Marhun',
'error'
)
$(this).val(upah);
$(this).closest('tr').find('.bayaran').val(upah);
calculateall(jenis, taglel);
return false;
}
$(this).closest('tr').find('.bayaran').val(this.value);
calculateall(jenis, taglel);
});
$("input[name=txtbayarantawarruq]").change(function(e) {
// $("input[name=txtbayarantawarruq]").click(function(e) {
@@ -392,30 +567,43 @@
var sumtawarruq = 0;
var sum = 0;
var counterrorbayar = 0;
var selectedRadio = document.querySelector('input[name="radpembayaran"]:checked');
$('#belum_tawarruq').find('input[name=txtbayaranarrahn]').each(function() {
sumarrahn += parseFloat(this.value) || 0;
if (!selectedRadio) {
return;
}
if (this.value <= 0 || this.value == '') {
counterrorbayar++;
}
if(selectedRadio.value == 'kopkb'){
$('#selepas_tawarruq_koop').find('input[name=txtbayarantawarruq]').each(function(index) {
});
var bayaranselepas = (this.value * 100) / 10;
// bayaranselepas = Math.round(bayaranselepas);
bayaranselepas = bayaranselepas / 10;
$('#selepas_tawarruq').find('input[name=txtbayarantawarruq]').each(function(index) {
$('#spantransaksi' + (index + 1)).text(formatter.format(bayaranselepas));
var bayaranselepas = (this.value * 100) / 10;
// bayaranselepas = Math.round(bayaranselepas);
bayaranselepas = bayaranselepas / 10;
sumtawarruq += parseFloat(bayaranselepas) || 0;
$('#spantransaksi' + (index + 1)).text(formatter.format(bayaranselepas));
if (this.value <= 0 || this.value == '') {
counterrorbayar++;
}
});
}else{
$('#selepas_tawarruq').find('input[name=txtbayarantawarruq]').each(function(index) {
sumtawarruq += parseFloat(bayaranselepas) || 0;
var bayaranselepas = (this.value * 100) / 10;
// bayaranselepas = Math.round(bayaranselepas);
bayaranselepas = bayaranselepas / 10;
if (this.value <= 0 || this.value == '') {
counterrorbayar++;
}
});
$('#spantransaksi' + (index + 1)).text(formatter.format(bayaranselepas));
sumtawarruq += parseFloat(bayaranselepas) || 0;
if (this.value <= 0 || this.value == '') {
counterrorbayar++;
}
});
}
sum = sumarrahn + sumtawarruq;
sum = (sum * 100) / 10;
@@ -433,6 +621,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) {
@@ -450,7 +639,10 @@
<script>
document.addEventListener('DOMContentLoaded', function() {
var inputs = document.querySelectorAll('input[name="txtbayarantawarruq"]');
/*check radio button enabled*/
checked_rad();
var inputs = document.querySelectorAll('input[name="txtbayarantawarruq"]:not([disabled])');
Array.from(inputs).forEach(function(input) {
var timer;
@@ -458,9 +650,9 @@
input.addEventListener('input', function() {
const stringHasPoint = input.value.indexOf('.') !== -1;
const stringHasMoreThanTwoDecimal = input.value.split('.')[1].length > 2;
const lastDecimalIsNotZeroOrFive = input.value.split('.')[1].slice(-1) !== '0' && input.value.split('.')[1].slice(-1) !== '5';
const stringHasTwoDecimalNumber = input.value.split('.')[1].length === 2;
const stringHasMoreThanTwoDecimal = (stringHasPoint) ? input.value.split('.')[1].length > 2 : false;
const lastDecimalIsNotZeroOrFive = (stringHasPoint) ? input.value.split('.')[1].slice(-1) !== '0' && input.value.split('.')[1].slice(-1) !== '5' : false;
const stringHasTwoDecimalNumber = (stringHasPoint) ? input.value.split('.')[1].length === 2 : false;
if (stringHasPoint && stringHasMoreThanTwoDecimal) {
input.value = input.value.split('.')[0] + '.' + input.value.split('.')[1].substring(0, 2);
@@ -95,7 +95,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']);
@@ -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);
@@ -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]);
}
+78 -8
View File
@@ -2,6 +2,13 @@
@section('content')
<title>Home | Portal Pelanggan</title>
<div id="load-arrahn" class="d-none">
<div class="overlay-arrahn"></div>
<div class="loader-arrahn text-center">
<img src="{{ asset('argon/img/brand/ar-rahn-take-2.gif') }}">
</div>
</div>
<div class="row mt-n9 top-0">
<x-dashboard-card
title="Jum. Pembiayaan Semasa"
@@ -137,27 +144,29 @@
});
let totalSagInCart = [];
let updateSagInCart = function(norujukan){
let totaltagSyarikat = [];
let updateSagInCart = function(norujukan,syarikat){
let isNorujukanIsAlreadyInCart = totalSagInCart.includes(norujukan);
if(isNorujukanIsAlreadyInCart){
totalSagInCart = totalSagInCart.filter(x => x != norujukan);
}
let index = totalSagInCart.indexOf(norujukan);
totalSagInCart = totalSagInCart.filter(x => x != norujukan);
totaltagSyarikat.splice(index, 1);
}
if(! isNorujukanIsAlreadyInCart){
totalSagInCart.push(norujukan);
totaltagSyarikat.push(syarikat);
}
};
// 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,8 +181,69 @@
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);
(async () => {
const cartsAvailable = await checkCarts();
if (!cartsAvailable || (typeof cartsAvailable === 'object' && Object.keys(cartsAvailable).length === 0)) {
// console.log('No carts available or an error occurred.');
const loader = document.getElementById('load-arrahn');
loader.classList.remove('d-none');
event.target.submit();
return;
}
Swal.fire({
title: "Troli Anda Masih Ada Lagi?",
showDenyButton: true,
showCancelButton: false,
confirmButtonText: "Pergi Ke Troli",
denyButtonText: `Buang Troli`
}).then((result) => {
const loader = document.getElementById('load-arrahn');
loader.classList.remove('d-none');
if (result.isDenied) {
let remove_carts = fetch('/deletecarts')
.then(response => {
if (!response.ok) {
throw new Error('HTTP error ' + response.status);
}
return response.json();
})
.catch(error => console.error(error));
}
event.target.submit();
});
})();
});
const checkCarts = async () => {
try {
const response = await fetch('/showcarts-available');
if (!response.ok) {
throw new Error('HTTP error ' + response.status);
}
const data = await response.json();
return data;
} catch (error) {
console.error('Error fetching carts:', error);
return null;
}
};
window.addEventListener('pageshow', (event) => {
const loader = document.getElementById('load-arrahn');
if (loader) {
loader.classList.add('d-none');
}
});
</script>
@endsection
@@ -13,6 +13,12 @@
<!-- <div style="text-align: center;"><img src="{{ asset('/argon/img/brand/arrahnpay3.png') }}" style="text-align: center;"></div> -->
<h6 style="text-align: center; margin-bottom: 10%;">Log Masuk</h6>
@if(session('logsemula'))
<div class="alert alert-primary text-center font-weight-bold" style="font-size: 13px;color:white;">
{{ session('logsemula') }}
</div>
@endif
<form role="#" method="post" enctype="multipart/form-data" class="login-form" novalidate="novalidate">
@csrf
<div class="input-group input-group-outline my-3 {{ $errors->has('email') ? ' has-danger' : '' }}">
@@ -41,7 +47,7 @@
<button type="submit" class="btn bg-gradient-dark w-100 my-4 mb-2" onclick="loadingbtn();this.disabled=true;this.form.submit();" style="background: #4A4E59;">Masuk</button>
</div>
<div class="text-center mt-3" style="margin: 0% 10%;">
<a href="https://spare.arrahn.com.my/pembayaransegera" id="buttonspare" title="Pembayaran Pantas SPARE" style="color: #12B652; border: 1px solid #12B652;" class="btn my-4 mb-2" target="_blank">Bayaran Pantas (SPARE)</a href="#">
{{-- <a href="https://spare.arrahn.com.my/pembayaransegera" id="buttonspare" title="Pembayaran Pantas SPARE" style="color: #12B652; border: 1px solid #12B652;" class="btn my-4 mb-2" target="_blank">Bayaran Pantas (SPARE)</a href="#"> --}}
<!-- <a href="http://e-arrahn.test/pembayaransegera" id="buttonspare" title="Pembayaran Pantas SPARE" style="color: #12B652; border: 1px solid #12B652;" class="btn my-4 mb-2" target="_blank">Bayaran Pantas (SPARE)</a href="#"> -->
</div>
<p class="text-sm text-center">
@@ -71,7 +71,7 @@
<!-- Control Center for Material UI Kit: parallax effects, scripts for the example pages etc -->
<!-- Google Maps Plugin -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTTfWur0PDbZWPr7Pmq8K3jiDp0_xUziI"></script>
{{-- <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTTfWur0PDbZWPr7Pmq8K3jiDp0_xUziI"></script> --}}
<script src="{{ asset('assets/js/material-kit/material-kit.min.js?v=3.0.0') }}" type="text/javascript"></script>
<script>
+40 -1
View File
@@ -12,7 +12,10 @@
<link href="{{ asset('css/nucleo-icons.css') }}" rel="stylesheet">
<link href="{{ asset('css/nucleo-svg.css') }}" rel="stylesheet">
<script src="https://kit.fontawesome.com/42d5adcbca.js" crossorigin="anonymous"></script>
{{-- <script src="https://kit.fontawesome.com/42d5adcbca.js" crossorigin="anonymous"></script> --}}
<link href="{{ asset('css/nucleo-svg.css') }}" rel="stylesheet">
<link href="{{ asset('argon') }}/vendor/@fortawesome/fontawesome-free/css/all.min.css" rel="stylesheet">
<link href="{{ asset('argon/css/dataTables.bootstrap4.min.css') }}" rel="stylesheet">
<script src="{{ asset('argon') }}/vendor/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
@@ -61,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;
}
</style>
@@ -1,66 +1,51 @@
<!-- <div class="container position-sticky z-index-sticky top-0">
<div class="row">
<div class="col-12">
<nav class="navbar navbar-expand-lg position-absolute top-0 z-index-3 w-100 shadow-none my-3 navbar-transparent ">
<div class="container">
<a class="navbar-brand text-white " href="#home" rel="tooltip" title="Designed and Coded by Creative Tim" data-placement="bottom">
MOHAMAD HAFIZUDDIN BIN HANAFI
</a>
<button class="navbar-toggler shadow-none ms-2" type="button" data-bs-toggle="collapse" data-bs-target="#navigation" aria-controls="navigation" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon mt-2">
<span class="navbar-toggler-bar bar1"></span>
<span class="navbar-toggler-bar bar2"></span>
<span class="navbar-toggler-bar bar3"></span>
</span>
</button>
<div class="collapse navbar-collapse w-100 pt-3 pb-2 py-lg-0 ms-lg-12 ps-lg-5" id="navigation">
<ul class="navbar-nav navbar-nav-hover ms-auto">
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="#rekodpembelian">
<i class="fa fa-list-alt me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Senarai Rekod Gadaian & Tebusan">Rekod Pembelian</p>
</a>
</li>
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="#pemabayaran">
<i class="fa fa-money me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Transaksi Pembayaran Upah">Pembayaran</p>
</a>
</li>
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="#tebus">
<i class="fa fa-exchange me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tebus Marhun">Tebus</p>
</a>
</li>
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="#analisa">
<i class="fa fa-line-chart me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Analisa Marhun">Analisa</p>
</a>
</li>
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="#analisa">
<i class="fa fa-microchip me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Function Seterusnya">Next</p>
</a>
</li>
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="portalprofile">
<i class="fa fa-user me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tetapan Profile">Profil</p>
</a>
</li>
<li class="nav-item my-auto ms-3 ms-lg-0">
<a href="loginportal" class="btn btn-sm bg-white mb-0 me-1 mt-2 mt-md-0">Log out</a>
</li>
</ul>
</div>
</div>
</nav>
</div>
<style>
.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;
}
</style>
<script> let routetrolley = '{{ route("payment.action") }}';let csrftoken = '{{ csrf_token() }}';</script>
<script src="{{ asset('js/miscellaneous/navigation-trolley.js') }}"></script>
<div id="load-arrahn" class="d-none">
<div class="overlay-arrahn"></div>
<div class="loader-arrahn text-center">
<img src="{{ asset('argon/img/brand/ar-rahn-take-2.gif') }}">
</div>
</div> -->
</div>
<div class="container position-sticky z-index-sticky top-0">
<div class="row">
<div class="col-12">
@@ -78,24 +63,6 @@
</button>
<div class="collapse navbar-collapse pt-3 pb-2 py-lg-0 w-100" id="navigation">
<ul class="navbar-nav navbar-nav-hover ms-auto">
{{-- <li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="{{ route('semaksag') }}">
<i class="fa fa-list-alt me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Senarai Rekod Gadaian & Tebusan">Rekod Pembelian</p>
</a>
</li>
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="{{ route('pembayaransag') }}">
<i class="fa fa-money me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Transaksi Pembayaran Upah">Pembayaran</p>
</a>
</li>
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="{{ route('analisa.index') }}">
<i class="fa fa-line-chart me-1"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Analisa Marhun">Analisa</p>
</a>
</li> --}}
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2" href="{{ route('profile.edit') }}">
<i class="fa fa-user me-1"></i>
@@ -108,6 +75,12 @@
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Manual Pengguna">Manual Pengguna</p>
</a>
</li>
<li class="nav-item ms-lg-auto">
<a id="a-redirect" class="nav-link nav-link-icon me-2 cursor-pointer" onclick="redirectTrolley()">
<i class="fa fa-shopping-cart"></i>
<p class="d-inline text-sm z-index-1 font-weight-bold" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Troli">Troli <span id="cart-count" class="badge bg-danger ms-1">0</span></p>
</a>
</li>
<li class="nav-item my-auto ms-3 ms-lg-0">
<a href="{{ route('logout') }}" class="btn btn-sm bg-white border mb-0 me-1 mt-2 mt-md-0" onclick="event.preventDefault();document.getElementById('logout-form').submit();">
<span>{{ __('LOG KELUAR') }}</span>
@@ -12,16 +12,18 @@
</tr>
</thead>
<tbody class="list">
{{-- {{ dd($pembiayaan) }} --}}
@foreach ($pembiayaan as $data)
<tr>
<td>
<input type="checkbox" name="chkboxsag[]" value="{{ $data->norujukan }}"
id="sag-{{ $loop->iteration }}" data-norujukan="{{ $data->norujukan }}"
{{ $data->disabled_payment ? 'disabled' : '' }} />
data-syarikat="{{ $data->tag_syarikat }}" {{ $data->disabled_payment ? 'disabled' : '' }} />
</td>
<td>
<a href="#" class="marhun-detail-link">
<span class="text-sm text-info">{{ $data->norujukan }}</span>
<input type="hidden" name="tag_syarikat" value="{{ $data->tag_syarikat }}"/>
</a>
</td>
<td class="hide-xs">{{ $data->tempoh }}</td>
@@ -35,4 +37,4 @@
</tbody>
</table>
<i class="hide-xs text-success" style="font-size:12px;">"Swipe" ke kiri</i>
</div>
</div>
@@ -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);
+1 -1
View File
@@ -28,7 +28,7 @@
<!-- Control Center for Material UI Kit: parallax effects, scripts for the example pages etc -->
<!-- Google Maps Plugin -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTTfWur0PDbZWPr7Pmq8K3jiDp0_xUziI"></script>
{{-- <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTTfWur0PDbZWPr7Pmq8K3jiDp0_xUziI"></script> --}}
<script src="{{ asset('assets/js/material-kit/material-kit.min.js?v=3.0.0') }}" type="text/javascript"></script>
<script>
+22 -10
View File
@@ -208,20 +208,28 @@
@push('additional_js_scripts')
<script>
const showMarhunDetailModal = async function(event) {
const showMarhunDetailModal = async function(event,tagsyarikat) {
event.preventDefault();
document.getElementById('marhunLoader').style.display = 'flex';
const norujukan = event.target.innerHTML;
try {
const data = await fetch('/api/pembiayaan-modal-data/' + norujukan).then(x => x.json());
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
const data = await fetch('/api/pembiayaan-modal-data/' + norujukan + "/" + tagsyarikat)
.then(x => x.json())
.catch(error => {
console.error(error);
const loader = document.getElementById('load-arrahn');
loader.classList.add('d-none');
throw error;
});
const loader = document.getElementById('load-arrahn');
loader.classList.add('d-none');
const formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
$('#pembiayaan').text('RM' + formatter.format(data.gadaianDetails.pinjaman));
$('#bpembiayaan').text('RM' + formatter.format(data.gadaianDetails.bakipjm));
@@ -277,7 +285,11 @@
$('#main-table').on('click', 'a.marhun-detail-link', function(e) {
showMarhunDetailModal(e)
const loader = document.getElementById('load-arrahn');
loader.classList.remove('d-none');
const tag_syarikat = $(this).find('input[name="tag_syarikat"]').val();
showMarhunDetailModal(e,tag_syarikat)
});
});
+1 -1
View File
@@ -467,7 +467,7 @@
<script src="../assets/vendor/jquery.scrollbar/jquery.scrollbar.min.js"></script>
<script src="../assets/vendor/jquery-scroll-lock/dist/jquery-scrollLock.min.js"></script>
<!-- Optional JS -->
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTTfWur0PDbZWPr7Pmq8K3jiDp0_xUziI"></script>
{{-- <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDTTfWur0PDbZWPr7Pmq8K3jiDp0_xUziI"></script> --}}
<!-- Argon JS -->
<script src="../assets/js/argon.js?v=1.2.0"></script>
</body>
@@ -158,7 +158,7 @@
</td>
<td>
@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 }}
</td>
@@ -36,10 +36,46 @@
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<center>
<span class="far fa-check-circle fa-6x" style="color:green;"></span>
<h4 class="text-success mt-1 mb-1">Pembayaran Berjaya</h4>
@if($exist_carts)
<span class="text-dark">
Terima kasih atas pembayaran! Anda akan dibawa ke troli dalam masa <span id="remaining">10</span> saat.
</span>
<script>
let remainingElement = document.getElementById('remaining');
let remainingSeconds = parseInt(remainingElement.textContent, 10);
const remaining_countdown = () => {
if (remainingSeconds > 0) {
remainingSeconds--;
remainingElement.textContent = remainingSeconds;
} else {
clearInterval(interval);
let form = document.createElement('form');
form.method = 'POST';
form.action = '{{ route("payment.action") }}';
let csrfInput = document.createElement('input');
csrfInput.type = 'hidden';
csrfInput.name = '_token';
csrfInput.value = '{{ csrf_token() }}';
form.appendChild(csrfInput);
let redirectInput = document.createElement('input');
redirectInput.type = 'hidden';
redirectInput.name = 'redirect_trolley';
redirectInput.value = 'trolley';
form.appendChild(redirectInput);
document.body.appendChild(form);
form.submit();
}
};
const interval = setInterval(remaining_countdown, 1000);
</script>
@endif
<div class="row mb-4" style="margin-top:10px;">
<div class="col-12 text-dark"><small>*Sebarang pembayaran akan dikemaskini selepas <b>1 Jam</b></small></div>
</div>
@@ -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']);