import { NextRequest, NextResponse } from "next/server"; import { createClient } from "next-sanity"; import { Resend } from "resend"; import { apiVersion, dataset, projectId } from "@/sanity/lib/env"; export async function POST(req: NextRequest) { try { const body = await req.json(); const { entityName, contactEmail, contactPhone, partnershipTier, includeUHNW, vision, } = body; // Basic validation if (!entityName || !contactEmail) { return NextResponse.json( { error: "Entity name and corporate email are required." }, { status: 400 } ); } const submittedAt = new Date().toISOString(); let savedToSanity = false; let emailDispatched = false; // 1. PERSIST TO SANITY CMS const writeToken = process.env.SANITY_API_WRITE_TOKEN || process.env.SANITY_API_TOKEN; if (writeToken && projectId) { try { const writeClient = createClient({ projectId, dataset, apiVersion, useCdn: false, token: writeToken, }); await writeClient.create({ _type: "partnershipInquiry", status: "new", entityName, contactEmail, contactPhone: contactPhone || "", partnershipTier: partnershipTier || "", includeUHNW: Boolean(includeUHNW), vision: vision || "", submittedAt, }); savedToSanity = true; } catch (sanityErr) { console.error("[Partnership API] Failed to write to Sanity:", sanityErr); } } else { console.warn( "[Partnership API] SANITY_API_WRITE_TOKEN not configured. Data received in dev:", { entityName, contactEmail, partnershipTier } ); } // 2. DISPATCH NOTIFICATION EMAIL VIA RESEND const resendApiKey = process.env.RESEND_API_KEY; if (resendApiKey) { try { const resend = new Resend(resendApiKey); await resend.emails.send({ from: "Vietnam Wedding Guide ", to: [process.env.CONTACT_NOTIFICATION_EMAIL || "vietnamweddingguide@gmail.com"], replyTo: contactEmail, subject: `🤝 New Partnership Proposal — ${entityName} (${partnershipTier || "Strategic Alliance"})`, html: `

New Strategic Partnership Proposal

Submitted at ${new Date(submittedAt).toLocaleString()}

Entity / Agency:${entityName}
Corporate Email:${contactEmail}
Phone / WhatsApp:${contactPhone || "Not provided"}
Partnership Model:${partnershipTier || "Standard Partnership"}
UHNW Advisory Add-on:${includeUHNW ? "✅ Yes (Requested)" : "❌ No"}
${ vision ? `

Operational Capability & Vision:

${vision}

` : "" }

Manage this lead in Sanity Studio →

`, }); emailDispatched = true; } catch (resendErr) { console.error("[Partnership API] Failed to send email via Resend:", resendErr); } } return NextResponse.json({ success: true, savedToSanity, emailDispatched, message: "Partnership proposal successfully received.", }); } catch (err: any) { console.error("[Partnership API] Unhandled error:", err); return NextResponse.json( { error: "Internal server error occurred while processing proposal." }, { status: 500 } ); } }