buat pembayaran untuk phone boleh letak

This commit is contained in:
hafifierahman
2024-12-11 07:31:47 +08:00
parent 01cee71713
commit 4e4c9ecadd
7 changed files with 109 additions and 82 deletions
+13 -1
View File
@@ -417,6 +417,18 @@ class BayaranController extends Controller
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)
@@ -426,7 +438,7 @@ class BayaranController extends Controller
$exist_carts->delete();
}
return $exist_carts;
return response()->json($exist_carts);
}
public function serviceCallHttp($company){
+21
View File
@@ -66,3 +66,24 @@ radios.forEach((radio) => {
});
});
let deleteCarts = () => {
fetch('/deletecarts')
.then(response => {
if (!response.ok) {
throw new Error('HTTP error ' + response.status);
}
return response.json();
})
.then(data => {
console.log(data);
if (data) {
redirect_home();
}
})
.catch(error => console.error(error));
}
let redirect_home = () => {
window.location.href = redirect_home_var;
}
+11 -8
View File
@@ -1,6 +1,5 @@
async function fetchCartCount() {
try {
// Replace with your API endpoint
const response = await fetch('/showcarts-available');
if (!response.ok) {
@@ -8,35 +7,39 @@ async function fetchCartCount() {
}
const data = await response.json();
console.log(data.status_koop);
let totalcount = 0;
totalcount += (data.status_koop === 'PENDING') ? 1 : 0;
totalcount += (data.status_pkb === 'PENDING') ? 1 : 0;
// Assuming the API returns a JSON object with a `count` property
const cartCount = totalcount || 0;
updateCartCount(cartCount);
} catch (error) {
console.error('Error fetching cart count:', error);
// Optionally, handle error (e.g., show default value or retry)
updateCartCount(0);
}
}
function updateCartCount(itemCount) {
const cartCountElement = document.getElementById('cart-count');
const ahrefRedirect = document.getElementById('a-redirect');
if (itemCount > 0) {
cartCountElement.textContent = itemCount; // Show the number of items
cartCountElement.classList.remove('d-none'); // Ensure it is visible
cartCountElement.textContent = itemCount;
cartCountElement.classList.remove('d-none');
} else {
cartCountElement.textContent = ''; // Clear the content
cartCountElement.classList.add('d-none'); // Hide the element if the cart is empty
cartCountElement.textContent = '';
cartCountElement.classList.add('d-none');
}
}
function redirectTrolley() {
const cartCountElement = document.getElementById('cart-count');
if(cartCountElement.textContent == 0){
return false;
}
let form = document.createElement('form');
form.method = 'POST';
form.action = routetrolley;
@@ -36,6 +36,7 @@
}
}
</style>
<script>let redirect_home_var="{{ route('home') }}";</script>
<title>Bayar SAG | Portal Pelanggan</title>
<div>
@@ -151,7 +152,7 @@
</div>
<div class="form">
<div style="overflow-x: auto;">
<table class="table align-items-left" id="selepas_tawarruq" style="width: 100%;">
<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>
@@ -264,7 +265,7 @@
<!-- <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;
<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>
@@ -276,7 +277,7 @@
</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>
@@ -325,7 +326,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());
});
});
});
@@ -398,37 +399,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) {
@@ -520,16 +490,28 @@
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(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;
$('#spantransaksi' + (index + 1)).text(formatter.format(bayaranselepas));
sumtawarruq += parseFloat(bayaranselepas) || 0;
if (this.value <= 0 || this.value == '') {
counterrorbayar++;
}
});
}else{
$('#selepas_tawarruq').find('input[name=txtbayarantawarruq]').each(function(index) {
var bayaranselepas = (this.value * 100) / 10;
@@ -544,6 +526,7 @@
counterrorbayar++;
}
});
}
sum = sumarrahn + sumtawarruq;
sum = (sum * 100) / 10;
@@ -582,7 +565,7 @@
/*check radio button enabled*/
checked_rad();
var inputs = document.querySelectorAll('input[name="txtbayarantawarruq"]');
var inputs = document.querySelectorAll('input[name="txtbayarantawarruq"]:not([disabled])');
Array.from(inputs).forEach(function(input) {
var timer;
@@ -590,9 +573,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);
+24 -16
View File
@@ -184,18 +184,14 @@
listSyarikatinCartInput.value = JSON.stringify(totaltagSyarikat);
event.target.appendChild(listSyarikatinCartInput);
let check_carts = fetch('/showcarts-available')
.then(response => {
console.log(response);
if (!response.ok) {
throw new Error('HTTP error ' + response.status);
(async () => {
const cartsAvailable = await checkCarts();
if (!cartsAvailable || (typeof cartsAvailable === 'object' && Object.keys(cartsAvailable).length === 0)) {
// console.log('No carts available or an error occurred.');
event.target.submit();
return;
}
return response.json();
})
.then(data => console.log(data))
.catch(error => console.error(error));
if(check_carts){
Swal.fire({
title: "Troli Anda Masih Ada Lagi?",
showDenyButton: true,
@@ -203,11 +199,10 @@
confirmButtonText: "Pergi Ke Troli",
denyButtonText: `Buang Troli`
}).then((result) => {
/* Read more about isConfirmed, isDenied below */
if (result.isDenied) {
let remove_carts = fetch('/deletecarts')
.then(response => {
console.log(response);
console.log(response.data);
if (!response.ok) {
throw new Error('HTTP error ' + response.status);
}
@@ -219,11 +214,24 @@
}
event.target.submit();
});
console.log(check_carts);
}else{
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
@@ -112,7 +112,7 @@
</a>
</li>
<li class="nav-item ms-lg-auto">
<a class="nav-link nav-link-icon me-2 cursor-pointer" onclick="redirectTrolley()">
<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>
+1 -1
View File
@@ -125,7 +125,7 @@ Route::get('/requesticfe', 'App\Http\Controllers\TacController@requestKadPengena
Route::get('/requesttac', 'App\Http\Controllers\TacController@TACrequest')->name('requesttac');
Route::get('/requesttacfe', 'App\Http\Controllers\TacController@TACrequestfe')->name('requesttacfe');
Route::get('/showcarts-available','App\Http\Controllers\BayaranController@checkCarts')->name('checkcarts');
Route::get('/showcarts-available','App\Http\Controllers\BayaranController@UserCheckCarts')->name('checkcarts');
Route::get('/deletecarts','App\Http\Controllers\BayaranController@removeCarts')->name('removecarts');
Route::get('download/manualpengguna',['as'=>'miscellaneous.manualpengguna', function(){