import { NextRequest, NextResponse } from "next/server";
import { databases } from "@/lib/appwrite";
import { Query } from "appwrite";

export const runtime = "edge";

export async function GET(request: NextRequest) {
  console.log("🔍 [API] Debug registro usuario...");

  try {
    const { searchParams } = new URL(request.url);
    const userId = searchParams.get("userId");

    if (!userId) {
      return NextResponse.json(
        { success: false, error: "userId é obrigatório" },
        { status: 400 }
      );
    }

    const databaseId = process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!;
    const collectionId =
      process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_USUARIOS_ID!;

    console.log("🔍 [API] Buscando usuário com auth-id-appwrite:", userId);

    // Buscar usuário pelo auth-id-appwrite
    const response = await databases.listDocuments(databaseId, collectionId, [
      Query.equal("auth-id-appwrite", userId),
      Query.limit(1),
    ]);

    if (response.documents.length === 0) {
      console.log("❌ [API] Usuário não encontrado");
      return NextResponse.json({
        success: true,
        found: false,
        message: "Usuário não encontrado na base de dados",
      });
    }

    const usuario = response.documents[0];

    console.log("✅ [API] Usuário encontrado:", usuario.$id);

    // Análise detalhada dos dados
    const analise = {
      id: usuario.$id,
      "auth-id-appwrite": usuario["auth-id-appwrite"],
      "nome-civil": {
        valor: usuario["nome-civil"],
        preenchido: !!usuario["nome-civil"],
      },
      cpf: {
        valor: usuario.cpf,
        preenchido: !!usuario.cpf,
      },
      enderecos: {
        valor: usuario.enderecos,
        tipo: typeof usuario.enderecos,
        isArray: Array.isArray(usuario.enderecos),
        length: usuario.enderecos?.length || 0,
        valido:
          Array.isArray(usuario.enderecos) &&
          usuario.enderecos.length > 0 &&
          usuario.enderecos.some(
            (endereco) => endereco && endereco.trim() !== ""
          ),
      },
      empresas_array: {
        valor: usuario.empresas_array,
        tipo: typeof usuario.empresas_array,
        isArray: Array.isArray(usuario.empresas_array),
        length: usuario.empresas_array?.length || 0,
        valido:
          usuario.empresas_array &&
          Array.isArray(usuario.empresas_array) &&
          usuario.empresas_array.length > 0,
      },
    };

    const dadosFaltantes = [];

    // Verificar cada campo
    if (!analise["nome-civil"].preenchido || !analise.cpf.preenchido) {
      dadosFaltantes.push("Dados pessoais");
    }

    if (!analise.enderecos.valido) {
      dadosFaltantes.push("Endereço");
    }

    if (!analise.empresas_array.valido) {
      dadosFaltantes.push("Empresa");
    }

    const isCompleto = dadosFaltantes.length === 0;

    console.log("📋 [API] Análise completa:", {
      isCompleto,
      dadosFaltantes,
      analise,
    });

    return NextResponse.json({
      success: true,
      found: true,
      isCompleto,
      dadosFaltantes,
      analise,
      dadosCompletos: usuario,
    });
  } catch (error) {
    console.error("❌ [API] Erro ao debugar registro:", error);
    return NextResponse.json(
      { success: false, error: "Erro ao verificar registro" },
      { status: 500 }
    );
  }
}
