import { NextRequest, NextResponse } from "next/server";
import prisma from "@/lib/db";
import { sendNotificationEmail } from "@/lib/mail";

import { getIP, rateLimit } from "@/lib/rate-limit";

export async function POST(req: NextRequest) {
    const ip = getIP(req);
    if (!rateLimit(ip, 3)) {
        return NextResponse.json({ error: "Trop de messages. Veuillez réessayer plus tard." }, { status: 429 });
    }

    try {
        const { name, email, subject, message } = await req.json();
        if (!name || !email || !subject || !message) return NextResponse.json({ error: "Tous les champs sont requis" }, { status: 400 });

        await prisma.message.create({ data: { name, email, subject, message } });

        // Notification Email
        await sendNotificationEmail(
            `Nouveau message: ${subject}`,
            `<h3>Vous avez reçu un nouveau message de contact</h3>
             <p><strong>Nom:</strong> ${name}</p>
             <p><strong>Email:</strong> ${email}</p>
             <p><strong>Sujet:</strong> ${subject}</p>
             <p><strong>Message:</strong><br/>${message}</p>`
        );

        return NextResponse.json({ success: true });
    } catch (e) {
        console.error(e);
        return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
    }
}
