import type { APIRoute } from "astro";
import { appendToSheet, emailExists } from "../lib/googleSheets";
export const prerender = false;

export const POST: APIRoute = async ({ request }) => {
  try {
    // 🔹 Leer datos del formulario
    const formData = await request.formData();

    const nombres = formData.get("nombres")?.toString().trim();
    const apellidos = formData.get("apellidos")?.toString().trim();
    const pais = formData.get("pais")?.toString().trim();
    const lugar = formData.get("lugar")?.toString().trim();
    const direccion = formData.get("direccion")?.toString().trim();
    const telefono = formData.get("telefono")?.toString().trim();
    const email = formData.get("email")?.toString().trim();


    // 🔹 Validación básica
    if (!nombres || !apellidos || !telefono || !email) {
      return Response.redirect("/?error=datos", 303);
    }

    const exists = await emailExists(email);
    if (exists) {
      return Response.json({
        success: false,
        message: 'El email ya existe en la base de datos',
      })
    }

    const dataSend = {
      nombres,
      apellidos,
      pais,
      lugar,
      direccion,
      telefono,
      email
    };
    const emailApiKey = import.meta.env.EMAIL_API_KEY;

    const valuesForSheets = [
      nombres,
      apellidos,
      pais,
      lugar,
      direccion,
      telefono,
      email,
      new Date().toLocaleString()
    ];

    // 🔹 Enviar a tu backend real
    const [emailResponse] = await Promise.all([
      fetch("http://155.138.215.11:3050/email/send", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          "x-api-key": emailApiKey!,
        },
        body: JSON.stringify({
          type: "CENTRO_DEL_REINO_PAZ_Y_JUSTICIA_POSTULACION",
          data: dataSend,
        }),
      }),
      appendToSheet(valuesForSheets) // Guardar en Google Sheets
    ]);

    if (!emailResponse.ok) {
      return new Response(null, {
        status: 302,
        headers: {
          Location: "/",
        },
      });
    }

    // 🔹 Redirección elegante después de enviar
    return new Response(null, {
      status: 302,
      headers: {
        Location: "/?success=true",
      },
    });

  } catch (error) {
    return new Response(null, {
      status: 302,
      headers: {
        Location: "/",
      },
    });
  }
};
