Files
erahn-click/resources/views/includes/home.blade.php
T
2025-01-12 16:42:48 +08:00

249 lines
8.8 KiB
PHP

@extends ('layouts.indexfirst')
@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"
:subtitle=$total
icon="fas fa-chart-pie"
icon-state='warning'
:link="route('home')"
/>
<x-dashboard-card
title="Bil Pembiayaan Semasa"
:subtitle=$bilangan
icon="fas fa-users"
icon-state='success'
:link="route('home')"
/>
<x-dashboard-card
title="Bil Pembiayaan 6 Bulan Ke Atas"
:subtitle=$sixMonths
icon="fas fa-chart-bar"
:link="route('home', ['filter' => 'pembiayaan-6-bulan'])"
/>
<x-dashboard-card
title="Bil Pembiayaan Akan Dilelong"
:subtitle=$bilanganLelong
icon="fas fa-gavel"
icon-state='info'
card-background-state="{{ $bilanganLelong > 0 ? 'crimson' : 'white' }}"
:link="route('home', ['filter' => 'pembiayaan-akan-dilelong'])"
/>
</div>
<form method="post" id="formtable" action="{{ route('payment.action') }}">
@csrf
@error('totalSagInCartInput')
<script>
$.notify({
icon: 'fas fa-exclamation-triangle fa-2x',
newest_on_top: true,
message: "<strong style='font-size:15px;'>{{ $message }}</strong>"
}, {
type: 'danger',
allow_dismiss: false,
placement: {
align: 'center',
from: 'bottom'
},
animate: {
enter: 'animate__animated animate__bounce',
exit: 'animate__animated animate__bounceOutDown'
}
});
</script>
@enderror
@if (\Session::has('error'))
<script>
Swal.fire(
// "Melebihi tempoh 12 Bulan.",
"Akan/Telah Tamat Kontrak 12 Bulan.",
"{{ \Session::get('error') }}",
'warning'
)
</script>
@endif
@if (\Session::has('errorsagonline'))
<script>
Swal.fire(
"Pembayaran Terdahulu Dalam Proses.",
"{{ \Session::get('errorsagonline') }}",
'warning'
)
</script>
@endif
<br>
@if (request()->get('filter') == 'pembiayaan-akan-dilelong')
<x-dashboard-notification>
<x-dashboard-notification.item content="1. Sekiranya Lelongan Anda Dalam Tempoh Kontrak Lanjutan (Mencapai 12 Bulan), Urusan Penebusan Hanya Dibenarkan Di Kaunter Cawangan Selewatnya-lewatnya 3 Hari Sebelum Tarikh Lelong." />
<x-dashboard-notification.item content="2. Transaksi Pembayaran Hanya Dibenarkan Selewat-lewatnya 3 Hari Sebelum Lelongan." />
<x-dashboard-notification.item content="(Contoh: Tarikh Lelong: 21-02-2023, Pembayaran/Penebusan Hanya dibenarkan Sehingga Tarikh 18-02-2023 Sahaja)" />
</x-dashboard-notification>
@else
<x-dashboard-notification>
<x-dashboard-notification.item content="1. Sila Buat Penebusan Di Kaunter Jika Tempoh Telah Mencapai 12 Bulan!" />
<x-dashboard-notification.item content="2. Sila 'Tick' Kotak No Rujukan Yang Hendak Dibayar." />
</x-dashboard-notification>
@endif
<div class="card shadow">
<div class="card-body">
@if (request()->get('filter') == 'pembiayaan-akan-dilelong')
@include('includes.partials.table-pembiayaan-akan-dilelong')
@else
@include('includes.partials.table-pembiayaan')
@endif
</div>
</div>
<div class="d-flex justify-content-end mt-4">
<button type="submit" class="btn btn-primary"><span class="mr-3">Seterusnya</span>
<span class="badge alert-warning text-dark font-weight-bold" style="font-size:12px;" id="totalsag">0</span>
</button>
</div>
</form>
@include('modal.marhun')
<script>
$('#main-table').DataTable().destroy();
$('#main-table').DataTable({
"columnDefs": [{
"orderable": false,
"targets": 0
}],
language: {
'paginate': {
'previous': '<span class="fas fa-backward"></span>',
'next': '<span class="fas fa-forward"></span>'
}
},
"pageLength": 10,
"scrollX": true
});
let totalSagInCart = [];
let totaltagSyarikat = [];
let updateSagInCart = function(norujukan,syarikat){
console.log(norujukan,syarikat);
let isNorujukanIsAlreadyInCart = totalSagInCart.includes(norujukan);
if(isNorujukanIsAlreadyInCart){
let index = totalSagInCart.indexOf(norujukan);
totalSagInCart = totalSagInCart.filter(x => x != norujukan);
totaltagSyarikat.splice(index, 1);
}
if(! isNorujukanIsAlreadyInCart){
totalSagInCart.push(norujukan);
totaltagSyarikat.push(syarikat);
}
console.log("total:" + totalSagInCart);
console.log("totalsyarikat:" + totaltagSyarikat);
};
// Add event listener to checkboxes to update total count customer wants to pay
$('#main-table').on('input', 'input[type="checkbox"][name="chkboxsag[]"]', function(el) {
let norujukan = el.target.dataset.norujukan;
let tagsyarikat = el.target.dataset.syarikat;
let isNorujukanIsChecked = el.target.checked;
updateSagInCart(norujukan,tagsyarikat);
document.getElementById('totalsag').innerHTML = totalSagInCart.length;
});
document.querySelector('form#formtable').addEventListener('submit', function(event){
event.preventDefault();
// create new input
let totalSagInCartInput = document.createElement('input');
totalSagInCartInput.type = 'hidden';
totalSagInCartInput.name = 'totalSagInCartInput';
totalSagInCartInput.value = JSON.stringify(totalSagInCart);
event.target.appendChild(totalSagInCartInput);
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 => {
console.log(response.data);
if (!response.ok) {
throw new Error('HTTP error ' + response.status);
}
return response.json();
})
.then(data => console.log(data))
.catch(error => console.error(error));
}
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;
}
};
</script>
@endsection