import { NextResponse } from "next/server";
import { z } from "zod";
import { prisma } from "@/lib/prisma";
import { BASE_CATEGORY_VALUES } from "@/lib/base-category";
import { sendBaseContactEmail } from "@/lib/send-base-contact-email";

const schema = z.object({
  category: z.enum(BASE_CATEGORY_VALUES),
  name: z.string().min(2),
  email: z.string().email(),
  phone: z.string().optional(),
  message: z.string().optional(),
});

export async function POST(req: Request) {
  try {
    const data = schema.parse(await req.json());
    await prisma.baseContactLead.create({
      data: {
        category: data.category,
        name: data.name,
        email: data.email,
        phone: data.phone?.trim() || null,
        message: data.message?.trim() || null,
      },
    });
    await sendBaseContactEmail(data);
    return NextResponse.json({ ok: true });
  } catch (e) {
    if (e instanceof z.ZodError) {
      return NextResponse.json({ error: e.flatten() }, { status: 400 });
    }
    if (e instanceof Error) {
      return NextResponse.json({ error: e.message || "Erro ao enviar" }, { status: 500 });
    }
    return NextResponse.json({ error: "Erro ao enviar" }, { status: 500 });
  }
}

