Fix: Transactions not loading for user
The application is not fetching transactions for the user leopootz10@gmail.com.
This commit is contained in:
parent
f4f614e86b
commit
ba467fd4fe
@ -37,9 +37,24 @@ const Dashboard = () => {
|
||||
async function loadData() {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
console.log("Iniciando carregamento de dados para o mês:", selectedMonth);
|
||||
console.log("🚀 [Dashboard] Iniciando carregamento de dados para o mês:", selectedMonth);
|
||||
|
||||
// Verificar se existe email no localStorage
|
||||
const userEmail = localStorage.getItem('userEmail');
|
||||
console.log("📧 [Dashboard] Email no localStorage:", userEmail);
|
||||
|
||||
if (!userEmail) {
|
||||
console.error("❌ [Dashboard] Email não encontrado no localStorage!");
|
||||
toast({
|
||||
title: "Erro de autenticação",
|
||||
description: "Email do usuário não encontrado. Faça login novamente.",
|
||||
variant: "destructive"
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Buscar todos os dados necessários com filtro de mês
|
||||
console.log("📊 [Dashboard] Buscando dados do Supabase...");
|
||||
const [transacoesData, totalsData, categoriesData, monthlyDataResult, cartoesData] = await Promise.all([
|
||||
getTransacoes(selectedMonth),
|
||||
getTransactionSummary(selectedMonth),
|
||||
@ -51,7 +66,7 @@ const Dashboard = () => {
|
||||
// Calcular total dos cartões
|
||||
const totalCartoes = cartoesData.reduce((sum, cartao) => sum + (cartao.total_despesas || 0), 0);
|
||||
|
||||
console.log("Dados obtidos com sucesso:", {
|
||||
console.log("✅ [Dashboard] Dados obtidos com sucesso:", {
|
||||
transacoes: transacoesData.length,
|
||||
totals: totalsData,
|
||||
categories: categoriesData.length,
|
||||
@ -71,12 +86,20 @@ const Dashboard = () => {
|
||||
setCategories(categoriesData);
|
||||
setMonthlyData(monthlyDataResult);
|
||||
|
||||
toast({
|
||||
title: "Dados carregados com sucesso",
|
||||
description: `Dados financeiros de ${selectedMonth} foram atualizados`
|
||||
});
|
||||
if (transacoesData.length > 0 || categoriesData.length > 0 || monthlyDataResult.length > 0) {
|
||||
toast({
|
||||
title: "Dados carregados com sucesso",
|
||||
description: `${transacoesData.length} transações encontradas para ${selectedMonth}`
|
||||
});
|
||||
} else {
|
||||
toast({
|
||||
title: "Nenhum dado encontrado",
|
||||
description: `Não foram encontradas transações para ${selectedMonth}`,
|
||||
variant: "destructive"
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Erro ao carregar dados:", error);
|
||||
console.error("💥 [Dashboard] Erro ao carregar dados:", error);
|
||||
toast({
|
||||
title: "Erro ao carregar dados",
|
||||
description: "Verifique a conexão com o Supabase",
|
||||
|
||||
@ -8,13 +8,23 @@ import { supabase } from "@/integrations/supabase/client";
|
||||
export const getUserEmail = (): string | null => {
|
||||
const userEmail = localStorage.getItem('userEmail');
|
||||
|
||||
console.log("📧 [getUserEmail] Email raw do localStorage:", userEmail);
|
||||
|
||||
if (!userEmail) {
|
||||
console.error('Email do usuário não encontrado no localStorage');
|
||||
console.error('❌ [getUserEmail] Email do usuário não encontrado no localStorage');
|
||||
console.log("🔍 [getUserEmail] Verificando todas as chaves do localStorage:");
|
||||
for (let i = 0; i < localStorage.length; i++) {
|
||||
const key = localStorage.key(i);
|
||||
console.log(` ${key}: ${localStorage.getItem(key)}`);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Normalize the email (lowercase and trim spaces)
|
||||
return userEmail.trim().toLowerCase();
|
||||
const normalizedEmail = userEmail.trim().toLowerCase();
|
||||
console.log("✅ [getUserEmail] Email normalizado:", normalizedEmail);
|
||||
|
||||
return normalizedEmail;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -24,20 +34,27 @@ export const getUserEmail = (): string | null => {
|
||||
*/
|
||||
export const getUserGroups = async (userEmail: string): Promise<string[]> => {
|
||||
try {
|
||||
console.log("👥 [getUserGroups] Buscando grupos para email:", userEmail);
|
||||
|
||||
const { data: userGroups, error: groupsError } = await supabase
|
||||
.from('grupos_whatsapp')
|
||||
.select('remote_jid')
|
||||
.eq('login', userEmail);
|
||||
|
||||
if (groupsError) {
|
||||
console.error('Erro ao buscar grupos do usuário:', groupsError);
|
||||
console.error('❌ [getUserGroups] Erro ao buscar grupos do usuário:', groupsError);
|
||||
return [];
|
||||
}
|
||||
|
||||
console.log("👥 [getUserGroups] Grupos encontrados:", userGroups);
|
||||
|
||||
// Extract IDs of the groups to use in the filter
|
||||
return userGroups ? userGroups.map(group => group.remote_jid) : [];
|
||||
const groupIds = userGroups ? userGroups.map(group => group.remote_jid) : [];
|
||||
console.log("👥 [getUserGroups] IDs dos grupos extraídos:", groupIds);
|
||||
|
||||
return groupIds;
|
||||
} catch (error) {
|
||||
console.error('Erro ao obter grupos do usuário:', error);
|
||||
console.error('💥 [getUserGroups] Erro ao obter grupos do usuário:', error);
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
@ -9,28 +9,54 @@ import { getUserEmail, getUserGroups } from "./baseService";
|
||||
* @returns Promise with array of transactions
|
||||
*/
|
||||
export async function getTransacoes(monthFilter?: string): Promise<Transaction[]> {
|
||||
console.log("Buscando transações do Supabase...", monthFilter ? `Filtro do mês: ${monthFilter}` : "Sem filtro de mês");
|
||||
console.log("🔍 [getTransacoes] Iniciando busca de transações...");
|
||||
console.log("🔍 [getTransacoes] Filtro de mês:", monthFilter);
|
||||
|
||||
// Get the user's email from localStorage
|
||||
const normalizedEmail = getUserEmail();
|
||||
|
||||
console.log("📧 [getTransacoes] Email do usuário obtido:", normalizedEmail);
|
||||
|
||||
if (!normalizedEmail) {
|
||||
console.error("❌ [getTransacoes] Email não encontrado no localStorage");
|
||||
return [];
|
||||
}
|
||||
|
||||
console.log("Buscando transações para o usuário com email:", normalizedEmail);
|
||||
|
||||
try {
|
||||
// First, get all user's groups by email
|
||||
console.log("👥 [getTransacoes] Buscando grupos do usuário...");
|
||||
const groupIds = await getUserGroups(normalizedEmail);
|
||||
console.log(`Encontrados ${groupIds.length} grupos vinculados ao usuário:`, groupIds);
|
||||
console.log(`👥 [getTransacoes] Encontrados ${groupIds.length} grupos vinculados ao usuário:`, groupIds);
|
||||
|
||||
// Build the query with month filter if provided
|
||||
console.log("🏗️ [getTransacoes] Construindo query...");
|
||||
|
||||
let query = supabase
|
||||
.from('transacoes')
|
||||
.select('*');
|
||||
|
||||
// Debug: First, let's see what's in the transacoes table
|
||||
console.log("🔎 [getTransacoes] Verificando todas as transações na tabela...");
|
||||
const { data: allTransactions, error: allError } = await supabase
|
||||
.from('transacoes')
|
||||
.select('*')
|
||||
.or(`login.eq.${normalizedEmail},${groupIds.length > 0 ? `grupo_id.in.(${groupIds.map(id => `"${id}"`).join(',')})` : ''}`)
|
||||
.order('quando', { ascending: false });
|
||||
.limit(10);
|
||||
|
||||
if (allError) {
|
||||
console.error("❌ [getTransacoes] Erro ao buscar todas as transações:", allError);
|
||||
} else {
|
||||
console.log("📊 [getTransacoes] Total de transações na tabela (primeiras 10):", allTransactions);
|
||||
console.log("📊 [getTransacoes] Estrutura da primeira transação:", allTransactions[0]);
|
||||
}
|
||||
|
||||
// Now let's build the proper filter
|
||||
if (groupIds.length > 0) {
|
||||
query = query.or(`login.eq.${normalizedEmail},grupo_id.in.(${groupIds.map(id => `"${id}"`).join(',')})`);
|
||||
console.log("🔍 [getTransacoes] Query com grupos:", `login.eq.${normalizedEmail},grupo_id.in.(${groupIds.map(id => `"${id}"`).join(',')})`);
|
||||
} else {
|
||||
query = query.eq('login', normalizedEmail);
|
||||
console.log("🔍 [getTransacoes] Query apenas por email:", normalizedEmail);
|
||||
}
|
||||
|
||||
// Apply month filter if provided
|
||||
if (monthFilter) {
|
||||
@ -43,20 +69,40 @@ export async function getTransacoes(monthFilter?: string): Promise<Transaction[]
|
||||
.gte('quando', startDate)
|
||||
.lte('quando', `${endDate}T23:59:59.999Z`);
|
||||
|
||||
console.log(`Aplicando filtro de mês: ${startDate} até ${endDate}`);
|
||||
console.log(`📅 [getTransacoes] Aplicando filtro de mês: ${startDate} até ${endDate}`);
|
||||
}
|
||||
|
||||
query = query.order('quando', { ascending: false });
|
||||
|
||||
console.log("🚀 [getTransacoes] Executando query final...");
|
||||
const { data, error } = await query;
|
||||
|
||||
if (error) {
|
||||
console.error('Erro ao buscar transações:', error);
|
||||
console.error('❌ [getTransacoes] Erro ao executar query:', error);
|
||||
throw new Error('Não foi possível carregar as transações');
|
||||
}
|
||||
|
||||
console.log("Transações encontradas:", data);
|
||||
console.log("✅ [getTransacoes] Transações encontradas:", data?.length || 0);
|
||||
console.log("📋 [getTransacoes] Dados retornados:", data);
|
||||
|
||||
if (!data || data.length === 0) {
|
||||
console.warn("⚠️ [getTransacoes] Nenhuma transação encontrada para o usuário:", normalizedEmail);
|
||||
|
||||
// Let's check if there are transactions with similar emails
|
||||
console.log("🔍 [getTransacoes] Verificando emails similares na tabela...");
|
||||
const { data: similarEmails } = await supabase
|
||||
.from('transacoes')
|
||||
.select('login, count(*)')
|
||||
.not('login', 'is', null)
|
||||
.limit(20);
|
||||
|
||||
console.log("📧 [getTransacoes] Emails encontrados na tabela transacoes:", similarEmails);
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
// Transform the received data to the expected format, normalizing the types
|
||||
return data.map((item: any) => ({
|
||||
const transformedData = data.map((item: any) => ({
|
||||
id: item.id.toString(),
|
||||
user: item.user || '',
|
||||
login: item.login || normalizedEmail, // Ensure the login field is filled
|
||||
@ -69,8 +115,13 @@ export async function getTransacoes(monthFilter?: string): Promise<Transaction[]
|
||||
categoria: item.categoria || 'Outros',
|
||||
grupo_id: item.grupo_id || null
|
||||
}));
|
||||
|
||||
console.log("🔄 [getTransacoes] Transações transformadas:", transformedData.length);
|
||||
console.log("🔄 [getTransacoes] Primeira transação transformada:", transformedData[0]);
|
||||
|
||||
return transformedData;
|
||||
} catch (error) {
|
||||
console.error('Erro ao buscar transações:', error);
|
||||
console.error('💥 [getTransacoes] Erro geral na função:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user