/** * 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 => `
#${t.ticket_number}
${t.subject}
${t.date}
${t.status.toUpperCase()}
`).join(''); } else { container.innerHTML = '

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 => `
${m.sender === 'user' ? 'You' : 'Admin'} • ${m.time}
${m.message}
`).join(''); // For now, using a simple prompt-based interaction or just an alert with history alert(`TICKET: #${t.ticket_number}\nSUBJECT: ${t.subject}\nSTATUS: ${t.status.toUpperCase()}\n\nLATEST MESSAGES:\n${t.messages.map(m => `[${m.time}] ${m.sender.toUpperCase()}: ${m.message}`).join('\n')}`); } catch (err) { console.error('Error fetching ticket detail:', err); } }