import { NextRequest, NextResponse } from "next/server";
// import axios from "axios";

export async function POST(req: NextRequest) {
  try {
    const body = await req.json();

    const { email, firstName, startupName, url, details } = body;

    const response = await fetch('https://api.ipify.org?format=json');
    const data = await response.json();
    const userIp = data.ip;
    if (!email) {
      return NextResponse.json({ error: "Missing required fields" }, { status: 400 });
    }

    const fields = [{ name: "email", value: email }];

    if (firstName) {
      fields.push({ name: "firstname", value: firstName });
    }
    if (startupName) {
      fields.push({ name: "startup_name", value: startupName });
    }
    // if (url) {
    //   fields.push({ name: "attachment", value: url });
    // }
    if (url) {
      fields.push({ name: "website_url", value: url });
    }
    if (details) {
      fields.push({ name: "pitch_details", value: details });
    }

    fields.push({ name: "lead-source", value: "Codeventures MyPitchDeck" });
    fields.push({
      name: "demo_product_interest",
      value: "MyPitchDeck",
    });
    const formdata = {
      fields,
      context: {
        pageUri: req.headers.get("referer") || "Unknown",
        pageName: "Codeventure Pitchdeck",
        ipAddress: userIp,
      },
    };

    const portalId = process.env.PORTAL_ID;
    const formGuid = process.env.FORM_ID;

    const hubspotResponse = await fetch(
      `https://api.hsforms.com/submissions/v3/integration/submit/${portalId}/${formGuid}`,
      {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify(formdata),
      }
    );

    const responseJson = await hubspotResponse.json();

    if (!hubspotResponse.ok) {
      return NextResponse.json(responseJson, { status: hubspotResponse.status });
    }

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