const fs = require('fs'); const path = require('path'); const sgMail = require('@sendgrid/mail'); // Configure email service sgMail.setApiKey(process.env.SENDGRID_API_KEY); // Ensure data directory exists const dataDir = path.join(__dirname, '../data'); if (!fs.existsSync(dataDir)) { fs.mkdirSync(dataDir, { recursive: true }); } const submissionsFile = path.join(dataDir, 'submissions.json'); // Simple email validation function isValidEmail(email) { return /^\S+@\S+\.\S+$/.test(email); } // Append submission to JSON file function logSubmission(data) { let submissions = []; if (fs.existsSync(submissionsFile)) { submissions = JSON.parse(fs.readFileSync(submissionsFile)); } submissions.push({ ...data, timestamp: new Date().toISOString(), ip: req.ip }); fs.writeFileSync(submissionsFile, JSON.stringify(submissions, null, 2)); } module.exports = async (req, res) => { if (req.method !== 'POST') { return res.status(405).json({ error: 'Method not allowed' }); } try { const { name, email, message, phone, service, website, sourcePage } = req.body; // Honeypot check if (website) { return res.status(200).json({ ok: true }); } // Validation if (!name || !name.trim()) { return res.status(400).json({ error: 'Please enter your name' }); } if (!email || !isValidEmail(email)) { return res.status(400).json({ error: 'Please enter a valid email' }); } if (!message || !message.trim()) { return res.status(400).json({ error: 'Please enter your message' }); } // Prepare email const emailContent = `
Name: ${name}
Email: ${email}
${phone ? `Phone: ${phone}
` : ''} ${service ? `Service: ${service}
` : ''}Message:
${message}
Submitted from: ${sourcePage || 'Unknown page'}
`; // Send email if (process.env.SENDGRID_API_KEY) { await sgMail.send({ to: process.env.OWNER_EMAIL || 'Oengle001@gmail.com', from: process.env.FROM_EMAIL || 'no-reply@phoenixpressurewashingokc.com', subject: `New contact form submission - ${name}`, html: emailContent }); } // Log submission logSubmission(req.body); return res.status(200).json({ ok: true }); } catch (error) { console.error('Error processing contact form:', error); return res.status(500).json({ error: 'Internal server error' }); } };