import { Router, Request, Response } from 'express'; import pool from '../config/db'; import { ResultSetHeader } from 'mysql2'; const router = Router(); // Validation helper const isValidEmail = (email: string) => { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); }; router.post('/', async (req: Request, res: Response): Promise => { const { nom, prenom, account_email, contact_email, message } = req.body; // 1. Validation const errors: string[] = []; if (!nom || nom.trim() === '') errors.push('Le nom est requis.'); if (!prenom || prenom.trim() === '') errors.push('Le prénom est requis.'); if (!account_email || account_email.trim() === '') { errors.push("L'email du compte est requis."); } else if (!isValidEmail(account_email)) { errors.push("Le format de l'email du compte est invalide."); } if (!contact_email || contact_email.trim() === '') { errors.push("L'email de contact est requis."); } else if (!isValidEmail(contact_email)) { errors.push("Le format de l'email de contact est invalide."); } if (!message || message.trim() === '') errors.push('Le message est requis.'); if (errors.length > 0) { res.status(400).json({ status: 'error', errors }); return; } // 2. Insert into Database try { const query = 'INSERT INTO support_requests (nom, prenom, account_email, contact_email, message) VALUES (?, ?, ?, ?, ?)'; const [result] = await pool.query(query, [nom, prenom, account_email, contact_email, message]); res.status(201).json({ status: 'success', message: 'Demande de support envoyée avec succès.', id: result.insertId }); } catch (error: any) { console.error('Error inserting support request:', error); res.status(500).json({ status: 'error', message: 'Erreur serveur lors de la sauvegarde.' }); } }); export default router;