Athenaeum/static/js/cart.js

136 lines
4.3 KiB
JavaScript
Raw Normal View History

2025-05-25 16:25:22 +02:00
async function loadCart() {
try {
const response = await fetch('/api/cart', {
headers: getAuthHeaders()
});
if (response.status === 401) {
window.location.href = '/login.html';
return;
}
const items = await response.json();
if (items.length === 0) {
container.innerHTML = `
<div class="col-12 text-center">
<p class="text-muted">Twój koszyk jest pusty</p>
<a href="/" class="btn btn-gothic">Przeglądaj książki</a>
</div>
`;
return;
}
const container = document.getElementById('cart-items');
container.innerHTML = items.map(item => `
<div class="col-md-6 col-lg-4">
<div class="card dark-card h-100">
<img src="${item.obraz_url}"
class="card-img-top"
style="height: 200px; object-fit: cover;">
<div class="card-body">
<h5 class="card-title">${item.tytul}</h5>
<p class="card-text">Ilość: ${item.quantity}</p>
<p class="text-danger">${item.cena.toString()} PLN</p>
</div>
</div>
</div>
`).join('');
} catch (error) {
console.error('Błąd:', error);
showError('Wystąpił błąd podczas ładowania koszyka');
}
}
document.addEventListener('DOMContentLoaded', async () => {
try {
const token = localStorage.getItem('token');
if (!token) {
window.location.href = '/login.html';
return;
}
const response = await fetch('/api/cart', {
headers: {
'Authorization': `Bearer ${token}`
}
});
if (!response.ok) throw new Error('Błąd ładowania koszyka');
const cartItems = await response.json();
const container = document.getElementById('cart-items');
container.innerHTML = '';
cartItems.forEach(item => {
const itemHTML = `
<div class="col-md-6">
<div class="card dark-card mb-3">
<div class="row g-0">
<div class="col-md-4">
<img src="${item.obraz_url}" class="img-fluid rounded-start" alt="${item.tytul}">
</div>
<div class="col-md-8">
<div class="card-body">
<h5 class="card-title">${item.tytul}</h5>
<p class="card-text">Ilość: ${item.quantity}</p>
<p class="card-text">Cena: ${item.cena} PLN</p>
</div>
</div>
</div>
</div>
</div>
`;
container.insertAdjacentHTML('beforeend', itemHTML);
});
} catch (error) {
console.error('Error:', error);
alert('Nie udało się załadować koszyka');
}
});
2025-05-25 16:54:16 +02:00
document.getElementById('checkoutBtn').addEventListener('click', async () => {
try {
const token = localStorage.getItem('token');
if (!token) {
window.location.href = '/login.html';
return;
}
// Pobierz aktualną zawartość koszyka
const cartResponse = await fetch('/api/cart', {
headers: { 'Authorization': `Bearer ${token}` }
});
const cartItems = await cartResponse.json();
// Przygotuj dane do zamówienia
const checkoutData = {
items: cartItems.map(item => ({
book_id: item.book_id,
quantity: item.quantity
})),
total: cartItems.reduce((sum, item) =>
sum + (parseFloat(item.cena) * item.quantity), 0)
};
// Wyślij zamówienie
const response = await fetch('/api/checkout', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(checkoutData)
});
if (!response.ok) throw new Error('Błąd podczas składania zamówienia');
window.location.href = '/thankyou.html';
} catch (error) {
console.error('Error:', error);
alert('Nie udało się złożyć zamówienia: ' + error.message);
}
});