import { NextResponse } from 'next/server';
import { Resend } from 'resend';
import contactData from "@/data/contact.json";
import { promises as fs } from 'fs';
import path from 'path';

// Inicializácia Resend s API kľúčom z .env.local
const resend = new Resend(process.env.RESEND_API_KEY);

export async function POST(request: Request) {
  try {
    // 1. Získanie dát z prichádzajúceho JSON requestu
    const { firstName, lastName, email, subject, body } = await request.json();

    // 2. Cesta k HTML šablóne a jej načítanie
    const filePath = path.join(process.cwd(), 'src/data/email.html');
    let htmlContent = await fs.readFile(filePath, 'utf8');

    // 3. Dynamické nahradenie placeholderov v HTML súbore za reálne dáta
    // Používame globálny replace (/.../g), ak by sa premenná v HTML opakovala
    const finalHtml = htmlContent
      .replace(/{{firstName}}/g, firstName)
      .replace(/{{lastName}}/g, lastName)
      .replace(/{{subject}}/g, subject)
      .replace(/{{email}}/g, email)
      .replace(/{{body}}/g, body.replace(/\n/g, '<br>')); // Ošetrenie nových riadkov

    // 4. Odoslanie e-mailu cez službu Resend
    const { data, error } = await resend.emails.send({
      from: contactData.config.from_email,
      to: [contactData.config.to_email],
      subject: `📩 New Message: ${subject}`,
      replyTo: email, // Umožní ti odpovedať priamo odosielateľovi kliknutím na "Reply"
      html: finalHtml,
    });

    // 5. Ošetrenie chýb z Resend API
    if (error) {
      console.error("Resend Error:", error);
      return NextResponse.json({ error }, { status: 400 });
    }

    // 6. Úspešná odpoveď
    return NextResponse.json({ success: true, data });

  } catch (error: any) {
    console.error("Server Error:", error);
    return NextResponse.json(
      { error: "Internal Server Error", details: error.message }, 
      { status: 500 }
    );
  }
}