diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 5ee7b04..0a8b957 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -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", diff --git a/src/services/transacao/baseService.ts b/src/services/transacao/baseService.ts index 2df45bd..f6cdfcb 100644 --- a/src/services/transacao/baseService.ts +++ b/src/services/transacao/baseService.ts @@ -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 => { 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 []; } }; diff --git a/src/services/transacao/transacaoFetchService.ts b/src/services/transacao/transacaoFetchService.ts index a1c3de1..6fa16c0 100644 --- a/src/services/transacao/transacaoFetchService.ts +++ b/src/services/transacao/transacaoFetchService.ts @@ -9,28 +9,54 @@ import { getUserEmail, getUserGroups } from "./baseService"; * @returns Promise with array of transactions */ export async function getTransacoes(monthFilter?: string): Promise { - 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 ({ + 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