document.addEventListener('DOMContentLoaded', () => { currentUser = Auth.requireAuth(); if (!currentUser) return; renderSidebar(); allOrders = DB.Orders.byBuyer(currentUser.id).reverse(); renderOrders('all'); }); function renderSidebar() { const initials = currentUser.name.split(' ').map(w => w[0]).join('').substring(0, 2).toUpperCase(); document.getElementById('sidebarUserCard').innerHTML = ` 👤 Người mua `; document.getElementById('navUserInfo').innerHTML = `${currentUser.name}`; if (currentUser.role === 'seller' && currentUser.shopStatus === 'approved') { document.getElementById('sellerLink').href = 'seller-dashboard.html'; } } function filterOrders(status, btn) { currentFilter = status; document.querySelectorAll('.filter-tab').forEach(t => t.classList.remove('active')); btn.classList.add('active'); renderOrders(status); } function renderOrders(status) { const orders = status === 'all' ? allOrders : allOrders.filter(o => o.status === status); const container = document.getElementById('ordersList'); if (!orders.length) { container.innerHTML = `
📦

Không có đơn hàng nào

Bắt đầu mua sắm và đơn hàng sẽ hiển thị tại đây

Mua sắm ngay
`; return; } container.innerHTML = orders.map(o => { const statusMap = { pending: ['Chờ xác nhận', 'status-pending'], processing: ['Đang đóng gói', 'status-processing'], shipping: ['Đang giao hàng', 'status-shipping'], delivered: ['Đã giao', 'status-delivered'], cancelled: ['Đã huỷ', 'status-cancelled'], }; const [label, cls] = statusMap[o.status] || ['Không xác định', '']; const items = o.items || []; return `
${o.shopName}
Đơn #${o.id} · ${formatDate(o.createdAt)}
${label}
${items.map(item => `
${item.emoji || '📦'}
${item.name}
x${item.qty}
${formatMoney(item.price * item.qty)}
`).join('')}
`; }).join(''); } function confirmReceived(orderId) { if (!confirm('Xác nhận đã nhận được hàng?')) return; DB.Orders.update(orderId, { status: 'delivered', deliveredAt: new Date().toISOString() }); allOrders = DB.Orders.byBuyer(currentUser.id).reverse(); renderOrders(currentFilter); showToast('✅ Xác nhận nhận hàng thành công!'); } function cancelOrder(orderId) { if (!confirm('Huỷ đơn hàng này?')) return; DB.Orders.update(orderId, { status: 'cancelled' }); allOrders = DB.Orders.byBuyer(currentUser.id).reverse(); renderOrders(currentFilter); showToast('Đã huỷ đơn hàng #' + orderId); } function reorder(orderId) { showToast('🔁 Đang thêm sản phẩm vào giỏ hàng...'); setTimeout(() => window.location.href = '../index.html', 1000); } function formatMoney(n) { return '₫' + (n || 0).toLocaleString('vi-VN'); } function formatDate(d) { if (!d) return ''; const date = new Date(d); return `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()} ${date.getHours()}:${String(date.getMinutes()).padStart(2, '0')}`; } function showToast(msg) { const t = document.createElement('div'); t.className = 'toast'; t.textContent = msg; document.body.appendChild(t); setTimeout(() => t.remove(), 3000); }