/** * Support Page Logic - Aadhaar Pro */ document.addEventListener('DOMContentLoaded', () => { initSupportPage(); }); function initSupportPage() { loadRecentTickets(); setupTicketForm(); } /** * Handle new ticket submission */ function setupTicketForm() { const form = document.getElementById('ticket-form'); if (!form) return; form.addEventListener('submit', async (e) => { e.preventDefault(); const data = { subject: document.getElementById('tick-subject').value.trim(), category: document.getElementById('tick-category').value, message: document.getElementById('tick-message').value.trim() }; if (!data.subject || !data.message) { alert('Please provide both a subject and a message.'); return; } try { const btn = form.querySelector('button[type="submit"]'); const originalBtnHtml = btn.innerHTML; btn.disabled = true; btn.innerHTML = ' Submitting...'; const res = await fetch('/api/support/create', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); const resData = await res.json(); btn.disabled = false; btn.innerHTML = originalBtnHtml; if (res.ok && resData.success) { alert(`Ticket ${resData.ticket_number} submitted successfully! Our team will get back to you soon.`); form.reset(); loadRecentTickets(); // Refresh list } else { alert('Submission failed: ' + (resData.error || 'Unknown error')); } } catch (err) { console.error('Support ticket error:', err); alert('An error occurred. Please try again later.'); } }); } /** * Load recent support tickets (API Integration) */ async function loadRecentTickets() { const container = document.getElementById('tickets-container'); if (!container) return; try { const res = await fetch('/api/support/list'); const tickets = await res.json(); if (Array.isArray(tickets) && tickets.length > 0) { container.innerHTML = tickets.map(t => `
No support tickets found.
'; } } catch (err) { console.error('Error loading tickets:', err); container.innerHTML = 'Failed to load ticket history.
'; } } /** * Basic view ticket placeholder (could be expanded to a modal or detail page) */ async function viewTicket(ticketId) { try { const res = await fetch(`/api/support/ticket/${ticketId}`); const t = await res.json(); if (t.error) { alert(t.error); return; } let messageThread = t.messages.map(m => `