diff --git a/src/components/avisos/ContaRecorrenteForm.tsx b/src/components/avisos/ContaRecorrenteForm.tsx index 9d9e936..129ed97 100644 --- a/src/components/avisos/ContaRecorrenteForm.tsx +++ b/src/components/avisos/ContaRecorrenteForm.tsx @@ -10,6 +10,7 @@ import { useForm } from 'react-hook-form'; import { supabase } from '@/integrations/supabase/client'; import { toast } from 'sonner'; import { useAuthStore } from '@/stores/authStore'; +import { useQuery } from '@tanstack/react-query'; interface ContaRecorrenteFormProps { onClose: () => void; @@ -34,19 +35,44 @@ const ContaRecorrenteForm = ({ onClose, onSuccess }: ContaRecorrenteFormProps) = } }); + // Buscar dados do usuário para pegar email e whatsapp + const { data: userData } = useQuery({ + queryKey: ['user-data', user?.id], + queryFn: async () => { + if (!user?.id) return null; + + const { data, error } = await supabase + .from('usuarios') + .select('email, whatsapp') + .eq('id', user.id) + .single(); + + if (error) throw error; + return data; + }, + enabled: !!user?.id + }); + const onSubmit = async (data: FormData) => { if (!user?.id) { toast.error('Usuário não encontrado. Faça login novamente.'); return; } + if (!userData) { + toast.error('Dados do usuário não encontrados.'); + return; + } + try { const { error } = await supabase .from('contas_recorrentes') .insert([{ ...data, user_id: user.id, - valor: data.valor || null + valor: data.valor || null, + email_usuario: userData.email, + whatsapp_usuario: userData.whatsapp }]); if (error) throw error; diff --git a/src/integrations/supabase/types.ts b/src/integrations/supabase/types.ts index 5ca25c4..ebc60d8 100644 --- a/src/integrations/supabase/types.ts +++ b/src/integrations/supabase/types.ts @@ -207,12 +207,14 @@ export type Database = { descricao: string | null dia_vencimento: number dias_antecedencia: number + email_usuario: string | null hora_aviso: string id: string nome_conta: string updated_at: string user_id: string valor: number | null + whatsapp_usuario: string | null } Insert: { ativo?: boolean @@ -220,12 +222,14 @@ export type Database = { descricao?: string | null dia_vencimento: number dias_antecedencia?: number + email_usuario?: string | null hora_aviso?: string id?: string nome_conta: string updated_at?: string user_id: string valor?: number | null + whatsapp_usuario?: string | null } Update: { ativo?: boolean @@ -233,12 +237,14 @@ export type Database = { descricao?: string | null dia_vencimento?: number dias_antecedencia?: number + email_usuario?: string | null hora_aviso?: string id?: string nome_conta?: string updated_at?: string user_id?: string valor?: number | null + whatsapp_usuario?: string | null } Relationships: [] } diff --git a/supabase/functions/avisos-financeiros/index.ts b/supabase/functions/avisos-financeiros/index.ts index 39b8d63..ae6af44 100644 --- a/supabase/functions/avisos-financeiros/index.ts +++ b/supabase/functions/avisos-financeiros/index.ts @@ -17,11 +17,15 @@ interface ContaRecorrente { hora_aviso: string; dias_antecedencia: number; ativo: boolean; + email_usuario: string | null; + whatsapp_usuario: string | null; } interface AvisoData { conta_id: string; user_id: string; + email_usuario: string | null; + whatsapp_usuario: string | null; nome_conta: string; descricao: string | null; valor: number | null; @@ -47,7 +51,7 @@ serve(async (req) => { console.log(`Executando verificação de avisos às ${horaAtual}`) - // Buscar todas as contas ativas + // Buscar todas as contas ativas incluindo email e whatsapp do usuário const { data: contas, error: contasError } = await supabase .from('contas_recorrentes') .select('*') @@ -104,6 +108,8 @@ serve(async (req) => { const avisoData: AvisoData = { conta_id: conta.id, user_id: conta.user_id, + email_usuario: conta.email_usuario, + whatsapp_usuario: conta.whatsapp_usuario, nome_conta: conta.nome_conta, descricao: conta.descricao, valor: conta.valor, @@ -139,7 +145,7 @@ serve(async (req) => { if (webhookResponse.ok) { avisosEnviados++ - console.log(`✅ Aviso enviado com sucesso para: ${conta.nome_conta}`) + console.log(`✅ Aviso enviado com sucesso para: ${conta.nome_conta} (${conta.whatsapp_usuario})`) } else { console.error(`❌ Erro ao enviar webhook para: ${conta.nome_conta}`) } diff --git a/supabase/migrations/20250623215654-21d53875-ab4d-4c69-8c04-20224189b2eb.sql b/supabase/migrations/20250623215654-21d53875-ab4d-4c69-8c04-20224189b2eb.sql new file mode 100644 index 0000000..f84c10f --- /dev/null +++ b/supabase/migrations/20250623215654-21d53875-ab4d-4c69-8c04-20224189b2eb.sql @@ -0,0 +1,16 @@ + +-- Adicionar colunas para email e whatsapp do usuário na tabela contas_recorrentes +ALTER TABLE public.contas_recorrentes +ADD COLUMN email_usuario TEXT, +ADD COLUMN whatsapp_usuario TEXT; + +-- Atualizar os registros existentes com os dados dos usuários +UPDATE public.contas_recorrentes cr +SET + email_usuario = u.email, + whatsapp_usuario = u.whatsapp +FROM public.usuarios u +WHERE cr.user_id::text = u.id::text; + +-- Adicionar políticas RLS para as novas colunas (as políticas existentes já cobrem essas colunas) +-- As políticas já existentes continuarão funcionando pois filtram por user_id