/** * Contact Management Admin Page * View and manage contact form submissions */ let allContacts = []; let currentContact = null; // Initialize page document.addEventListener('DOMContentLoaded', async () => { await loadStats(); await loadContacts(); setupEventListeners(); }); /** * Load statistics */ async function loadStats() { try { const token = localStorage.getItem('admin_token'); const response = await fetch('/api/contact/admin/stats', { headers: { 'Authorization': `Bearer ${token}` } }); if (!response.ok) throw new Error('Failed to load stats'); const data = await response.json(); const stats = data.stats; document.getElementById('stat-total').textContent = stats.total; document.getElementById('stat-new').textContent = stats.by_status.new; document.getElementById('stat-assigned').textContent = stats.by_status.assigned; document.getElementById('stat-responded').textContent = stats.by_status.responded; } catch (error) { console.error('Error loading stats:', error); } } /** * Load contacts */ async function loadContacts() { try { const token = localStorage.getItem('admin_token'); const status = document.getElementById('filter-status').value; const type = document.getElementById('filter-type').value; const priority = document.getElementById('filter-priority').value; let url = '/api/contact/admin/list?limit=50'; if (status) url += `&status=${status}`; if (type) url += `&type=${type}`; if (priority) url += `&priority=${priority}`; const response = await fetch(url, { headers: { 'Authorization': `Bearer ${token}` } }); if (!response.ok) throw new Error('Failed to load contacts'); const data = await response.json(); allContacts = data.contacts; renderContacts(); } catch (error) { console.error('Error loading contacts:', error); showError('Failed to load contacts'); } } /** * Render contacts list */ function renderContacts() { const container = document.getElementById('contacts-container'); if (allContacts.length === 0) { container.innerHTML = \`
No contacts found matching the selected filters.
Email: \${escapeHtml(contact.contact.email)} \${contact.contact.organization ? \` | Org: \${escapeHtml(contact.contact.organization)}\` : ''}
\${contact.inquiry.subject ? \`\${escapeHtml(contact.inquiry.subject)}
\` : ''}\${escapeHtml(contact.inquiry.message)}
\${escapeHtml(message)}