import { Request, Response, NextFunction, RequestHandler } from "express";
import { renderEmailTemplate } from "../utils/emailTemplate";
import { sendEmail } from "../services/emailService";
import dotenv from "dotenv";
dotenv.config();

export class ContactController {
  contact: RequestHandler = async (req: Request, res: Response) => {
    try {
      const { name, email, subject, message } = req.body;

      if (!name || !email || !subject || !message) {
        res
          .status(400)
          .json({ success: false, message: "All fields are required" });
        return;
      }

      const emailData = {
        sender: { email: process.env.FROM_EMAIL!, name },
        to: [
          { email: "support@humanizar-texto.ai", name: "Humanizer Support" },
        ],
        replyTo: { email, name },
        subject: `Contacto: ${subject}`,
        htmlContent: `
        <p><strong>De:</strong> ${name} (${email})</p>
        <p><strong>Tema:</strong> ${subject}</p>
        <p><strong>Mensaje:</strong></p>
        <p>${message}</p>
      `,
      };

      const htmlContent = renderEmailTemplate("contact-us.html", {
        name: name,
        email: email,
        subject: subject,
        message: message,
      });

      await sendEmail({
        to: [
          { email: "support@humanizar-texto.ai", name: "Humanizer Support" },
        ],
        subject: `Contacto: ${subject}`,
        htmlContent,
        replyTo: { email, name },
      });

      res
        .status(200)
        .json({ success: true, message: "Message sent successfully" });
    } catch (error) {
      console.error("Contact Form Error:", error);
      res
        .status(500)
        .json({ success: false, message: "Failed to send message" });
    }
  };
}
