message (2)
message (2)
function addToCart(product) {
const existingProduct = cart.find(item => item.id === product.id);
if (existingProduct) {
existingProduct.quantity += 1;
} else {
cart.push({
...product,
quantity: 1,
price_tnd: parseFloat(product.price_tnd)
});
}
updateCart();
showNotification(`${product.name} added to cart!`);
function updateCart() {
const cartItems = document.getElementById('cart-items');
const cartCount = document.getElementById('cart-count');
const totalElement = document.getElementById('total');
cartItems.innerHTML = '';
cart.forEach(item => {
const itemElement = document.createElement('div');
itemElement.className = 'cart-item';
itemElement.innerHTML = `
<img src="${item.image_url}" alt="${item.name}">
<div class="cart-item-details">
<div class="cart-item-name">${item.name}</div>
<div class="cart-item-price">${item.price_tnd.toFixed(3)} TND</div>
<div class="cart-item-quantity">
<button onclick="updateQuantity(${item.id}, -1)">-</button>
<span>${item.quantity}</span>
<button onclick="updateQuantity(${item.id}, 1)">+</button>
</div>
</div>
<div class="cart-item-remove" onclick="removeFromCart($
{item.id})">×</div>
`;
cartItems.appendChild(itemElement);
});
function updatePaymentAmount() {
const paymentAmountElement = document.getElementById('payment-amount');
if (paymentAmountElement) {
paymentAmountElement.textContent = calculateTotal().toFixed(3) + ' TND';
}
}
function calculateTotal() {
return cart.reduce((sum, item) => sum + item.price_tnd * item.quantity, 0);
}
function saveCart() {
localStorage.setItem('vendingCart', JSON.stringify(cart));
}
function removeFromCart(productId) {
cart = cart.filter(item => item.id !== productId);
updateCart();
saveCart();
}
function toggleCart() {
document.querySelector('.side-cart').classList.toggle('open');
document.querySelector('.overlay').classList.toggle('active');
}
function showPaymentModal() {
if (cart.length === 0) {
showNotification('Please add items to your cart first!', 'error');
return;
}
document.getElementById('paymentModal').style.display = 'block';
document.querySelector('.overlay').classList.add('active');
function closePaymentModal() {
document.getElementById('paymentModal').style.display = 'none';
document.querySelector('.overlay').classList.remove('active');
resetPaymentSteps();
}
function selectPaymentMethod(method) {
selectedPaymentMethod = method; // Save the selected payment method
document.getElementById('method-step').classList.add('hidden');
document.getElementById('details-step').classList.remove('hidden');
document.getElementById('step-0').classList.remove('active');
document.getElementById('step-1').classList.add('active');
}
function proceedToPayment() {
// Validate customer details
const customerName = document.getElementById('customer-name').value.trim();
const customerPhone = document.getElementById('customer-phone').value.trim();
if (!customerName || !customerPhone) {
showNotification('Please fill in all required fields.', 'error');
return;
}
function processPayment() {
// For online payments, validate card details
if (selectedPaymentMethod === 'online') {
const cardNumber = document.getElementById('card-number').value.trim();
const expiry = document.getElementById('expiry').value.trim();
const cvv = document.getElementById('cvv').value.trim();
const paymentData = {
machine_id: machineId,
items: cart,
total_amount: calculateTotal(),
customer_name: document.getElementById('customer-name').value,
customer_phone: document.getElementById('customer-phone').value,
payment_method: selectedPaymentMethod // Include the payment method
};
fetch('payment.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(paymentData)
})
.then(response => response.json())
.then(data => {
if (payButton) {
payButton.disabled = false;
payButton.textContent = 'Pay Now';
}
if (data.success) {
showConfirmation(data.collection_code, data.expires_in,
data.payment_method);
if (payButton) {
payButton.disabled = false;
payButton.textContent = 'Pay Now';
}
});
}
function showConfirmation(collectionCode, expiresIn, paymentMethod) {
if (selectedPaymentMethod === 'online') {
document.getElementById('payment-step').classList.add('hidden');
} else {
document.getElementById('details-step').classList.add('hidden');
}
document.getElementById('confirmation-step').classList.remove('hidden');
document.querySelectorAll('.step').forEach(step =>
step.classList.remove('active'));
document.getElementById('step-3').classList.add('active');
document.getElementById('collection-code').textContent = collectionCode;
function resetPaymentSteps() {
document.querySelectorAll('.payment-step').forEach(step => {
step.classList.add('hidden');
});
document.getElementById('method-step').classList.remove('hidden');
document.querySelectorAll('.step').forEach(step => {
step.classList.remove('active');
});
document.getElementById('step-0').classList.add('active');
if (document.getElementById('customer-details-form')) {
document.getElementById('customer-details-form').reset();
}
if (document.getElementById('payment-form')) {
document.getElementById('payment-form').reset();
}
setTimeout(() => {
notification.classList.remove('show');
setTimeout(() => {
notification.remove();
}, 300);
}, 3000);
}