import express from 'express'; import { saveLead, getLeads } from '../db.js'; import { sendContactEmail } from '../services/mailService.js'; const router = express.Router(); // POST /api/contact - Handle Contact Us Form submission via SMTP router.post('/', async (req, res) => { try { const { name, email, phone, mobile, subject, message, interests, type } = req.body; const contactName = name?.trim(); const contactEmail = email?.trim(); const contactPhone = (phone || mobile || '').trim(); const contactSubject = (subject || interests || type || 'General Inquiry').trim(); const contactMessage = (message || req.body.comments || '').trim(); if (!contactName || !contactEmail) { return res.status(400).json({ error: 'Name and Email are required.' }); } // Save lead record in database const lead = saveLead({ name: contactName, email: contactEmail, phone: contactPhone, subject: contactSubject, message: contactMessage, type: type || 'contact' }); // Attempt sending email via SMTP service const mailResult = await sendContactEmail({ name: contactName, email: contactEmail, phone: contactPhone, subject: contactSubject, message: contactMessage }); if (!mailResult.success) { // If SMTP is not yet configured or fails, return 200 with lead saved & warning return res.status(200).json({ success: true, saved: true, leadId: lead.id, smtpError: mailResult.error, message: 'Your message was saved successfully. Note: SMTP email dispatch requires SMTP credentials in .env.' }); } return res.status(200).json({ success: true, saved: true, leadId: lead.id, messageId: mailResult.messageId, message: 'Message sent successfully via SMTP!' }); } catch (error) { console.error('[Contact Route Error]', error); return res.status(500).json({ error: error.message || 'Internal Server Error' }); } }); // GET /api/contact/leads - Retrieve saved contact leads router.get('/leads', (_req, res) => { try { const leads = getLeads(); return res.json({ success: true, leads }); } catch (error) { return res.status(500).json({ error: error.message }); } }); export default router;