
import nodemailer from "nodemailer";

interface EmailPayload {
  name: string;
  email: string;
  phone?: string | null;
  projectType: string;
  message: string;
  newsletter: boolean;
}

export async function sendContactEmail(data: EmailPayload) {
  // Configurer le transporteur SMTP avec Gmail
  // Note: Pour Gmail, vous devrez probablement utiliser un "Mot de passe d'application"
  // si la double authentification (2FA) est activée.
  const transporter = nodemailer.createTransport({
    service: "gmail",
    auth: {
      user: process.env.SMTP_USER,
      pass: process.env.SMTP_PASS,
    },
  });

  const subject = `Nouveau message de ${data.name} - Projet ${data.projectType}`;

  const textContent = `
    Nouveau message reçu depuis le site Leifo:
    
    Nom: ${data.name}
    Email: ${data.email}
    Téléphone: ${data.phone || "Non renseigné"}
    Type de projet: ${data.projectType}
    Newsletter: ${data.newsletter ? "Oui" : "Non"}
    
    Message:
    ${data.message}
  `;

  const htmlContent = `
    <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
      <h2 style="color: #333;">Nouveau message de contact</h2>
      <div style="background-color: #f5f5f5; padding: 20px; border-radius: 8px;">
        <p><strong>Nom:</strong> ${data.name}</p>
        <p><strong>Email:</strong> <a href="mailto:${data.email}">${data.email}</a></p>
        <p><strong>Téléphone:</strong> ${data.phone || "Non renseigné"}</p>
        <p><strong>Type de projet:</strong> ${data.projectType}</p>
        <p><strong>Newsletter:</strong> ${data.newsletter ? "Oui" : "Non"}</p>
      </div>
      <div style="margin-top: 20px;">
        <h3 style="color: #666;">Message:</h3>
        <p style="white-space: pre-wrap; background-color: #fff; padding: 15px; border: 1px solid #ddd; border-radius: 4px;">${data.message}</p>
      </div>
    </div>
  `;

  // Configuration de l'expéditeur et du destinataire
  const sender = process.env.SMTP_FROM_EMAIL || process.env.SMTP_USER; // Ex: contact@leifo.fr
  const recipient = process.env.SMTP_USER; // Ex: leifowebagence@gmail.com

  // Envoyer l'email
  const info = await transporter.sendMail({
    from: `"Site Web Leifo" <${sender}>`,
    to: recipient,
    subject: subject,
    text: textContent,
    html: htmlContent,
    replyTo: data.email, // Permet de répondre directement au client
  });

  console.log("Message sent: %s", info.messageId);
  return info;
}
