import type { APIRoute } from "astro";
import { appendToSheet, emailExists } from "../lib/googleSheets";
import { sendEmailCf } from "../lib/email";
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 valuesForSheets = [
      nombres,
      apellidos,
      pais,
      lugar,
      direccion,
      telefono,
      email,
      new Date().toLocaleString()
    ];

    // 🔹 Enviar correo (Cloudflare) y guardar en Google Sheets
    await Promise.all([
      sendEmailCf({ nombres, apellidos }, email, "CENTRO_DEL_REINO_PAZ_Y_JUSTICIA_POSTULACION"),
      appendToSheet(valuesForSheets)
    ]);

    // 🔹 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: "/",
      },
    });
  }
};
