saveinmed/frontend/src/app/api/debug-registro/route.ts

119 lines
3.5 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server';
import { Client, Databases, Query } from 'node-appwrite';
export const runtime = 'edge';
const createDatabasesClient = () => {
const apiKey = process.env.APPWRITE_API_KEY;
const endpoint = process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT;
const projectId = process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID;
if (!apiKey || !endpoint || !projectId) {
throw new Error('Configuração do Appwrite ausente');
}
const client = new Client().setEndpoint(endpoint).setProject(projectId).setKey(apiKey);
return new Databases(client);
};
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!;
const databases = createDatabasesClient();
console.log('[API] Buscando usuário com auth-id-appwrite:', userId);
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] as Record<string, any>;
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: string) => 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: string[] = [];
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;
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 }
);
}
}