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 = '';

        if (cartItems.length === 0) {
            container.innerHTML = '<p class="text-center">Twój koszyk jest pusty</p>';
            return;
        }

        let totalCartValue = 0;

        cartItems.forEach(item => {
            // Formatowanie cen
            const price = parseFloat(item.cena);
            const formattedPrice = price.toFixed(2);
            const itemTotal = price * item.quantity;
            const formattedTotal = itemTotal.toFixed(2);
            totalCartValue += itemTotal;

            const itemHTML = `
                <div class="col-12 mb-4 cart-item">
                    <div class="card dark-card">
                        <div class="row g-0">
                            <div class="col-md-4 text-center p-3 cart-item-image">
                                <img src="${item.obraz_url}" 
                                     class="img-fluid rounded" 
                                     alt="${item.tytul}"
                                     style="max-height: 200px;">
                            </div>
                            <div class="col-md-8 cart-item-details">
                                <div class="card-body h-100 d-flex flex-column">
                                    <div>
                                        <h5 class="card-title cart-item-title">${item.tytul}</h5>
                                        <p class="card-text cart-item-author">${item.autor}</p>
                                    </div>
                                    
                                    <div class="d-flex flex-wrap gap-3 mb-2 cart-item-info mt-auto">
                                        <div class="d-flex flex-column flex-grow-1">
                                            <span class="fw-bold cart-item-price">Cena jednostkowa</span>
                                            <span class="fs-5">${formattedPrice} PLN</span>
                                        </div>
                                        
                                        <div class="d-flex flex-column">
                                            <span class="fw-bold">Ilość</span>
                                            <div class="d-flex align-items-center gap-2">
                                                <span class="fs-5 badge bg-dark rounded-pill">${item.quantity}</span>
                                            </div>
                                        </div>
                                        
                                        <div class="d-flex flex-column">
                                            <span class="fw-bold cart-item-total">Suma</span>
                                            <span class="fs-5 text-warning">${formattedTotal} PLN</span>
                                        </div>
                                    </div>
                                    
                                    <div class="mt-3">
                                        <div class="btn-group w-100" role="group">
                                            <button class="btn btn-sm btn-outline-secondary decrease-quantity flex-grow-1" 
                                                    data-book-id="${item.book_id}">
                                                <i class="bi bi-dash"></i> Zmniejsz ilość
                                            </button>
                                            <button class="btn btn-sm btn-outline-danger remove-from-cart cart-remove-btn flex-grow-1" 
                                                    data-book-id="${item.book_id}">
                                                <i class="bi bi-trash"></i> Usuń
                                            </button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            `;
            container.insertAdjacentHTML('beforeend', itemHTML);
        });

        // Dodaj całkowitą sumę koszyka
        const totalHTML = `
            <div class="col-12 mt-4">
                <div class="card dark-card p-4">
                    <div class="d-flex justify-content-between align-items-center">
                        <h2 class="mb-0">Suma całkowita</h2>
                        <h2 class="mb-0 total-cart-value">${totalCartValue.toFixed(2)} PLN</h2>
                    </div>
                </div>
            </div>
        `;
        container.insertAdjacentHTML('beforeend', totalHTML);

        // Obsługa przycisku zmniejszania ilości
        document.querySelectorAll('.decrease-quantity').forEach(button => {
            button.addEventListener('click', function() {
                const bookId = this.getAttribute('data-book-id');
                updateCartItemQuantity(bookId, 'decrease');
            });
        });

        // Obsługa przycisku usuwania
        document.querySelectorAll('.remove-from-cart').forEach(button => {
            button.addEventListener('click', function() {
                const bookId = this.getAttribute('data-book-id');
                updateCartItemQuantity(bookId, 'remove');
            });
        });

    } catch (error) {
        console.error('Error:', error);
        alert('Nie udało się załadować koszyka');
    }
});

async function updateCartItemQuantity(bookId, action) {
    try {
        const token = localStorage.getItem('token');
        if (!token) {
            window.location.href = '/login.html';
            return;
        }

        let endpoint, method;
        
        if (action === 'decrease') {
            endpoint = `/api/decrease-cart-item/${bookId}`;
            method = 'POST';
        } else if (action === 'remove') {
            endpoint = `/api/remove-from-cart/${bookId}`;
            method = 'DELETE';
        } else {
            throw new Error('Nieznana akcja');
        }

        const response = await fetch(endpoint, {
            method: method,
            headers: {
                'Authorization': `Bearer ${token}`
            }
        });

        if (!response.ok) throw new Error('Błąd aktualizacji koszyka');

        // Odśwież koszyk
        location.reload();
    } catch (error) {
        console.error('Error:', error);
        alert('Nie udało się zaktualizować koszyka');
    }
}

async function removeFromCart(bookId) {
    try {
        const token = localStorage.getItem('token');
        if (!token) {
            window.location.href = '/login.html';
            return;
        }

        const response = await fetch(`/api/remove-from-cart/${bookId}`, {
            method: 'DELETE',
            headers: {
                'Authorization': `Bearer ${token}`
            }
        });

        if (!response.ok) throw new Error('Błąd usuwania z koszyka');

        // Odśwież koszyk
        location.reload();
    } catch (error) {
        console.error('Error:', error);
        alert('Nie udało się usunąć z koszyka');
    }
}


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);
    }
});
