Run SQL to add user email and WhatsApp
Adds email and WhatsApp columns to the contas_recorrentes table and updates existing records.
This commit is contained in:
parent
7661a8ccf3
commit
1c372aa03b
@ -10,6 +10,7 @@ import { useForm } from 'react-hook-form';
|
|||||||
import { supabase } from '@/integrations/supabase/client';
|
import { supabase } from '@/integrations/supabase/client';
|
||||||
import { toast } from 'sonner';
|
import { toast } from 'sonner';
|
||||||
import { useAuthStore } from '@/stores/authStore';
|
import { useAuthStore } from '@/stores/authStore';
|
||||||
|
import { useQuery } from '@tanstack/react-query';
|
||||||
|
|
||||||
interface ContaRecorrenteFormProps {
|
interface ContaRecorrenteFormProps {
|
||||||
onClose: () => void;
|
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) => {
|
const onSubmit = async (data: FormData) => {
|
||||||
if (!user?.id) {
|
if (!user?.id) {
|
||||||
toast.error('Usuário não encontrado. Faça login novamente.');
|
toast.error('Usuário não encontrado. Faça login novamente.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!userData) {
|
||||||
|
toast.error('Dados do usuário não encontrados.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { error } = await supabase
|
const { error } = await supabase
|
||||||
.from('contas_recorrentes')
|
.from('contas_recorrentes')
|
||||||
.insert([{
|
.insert([{
|
||||||
...data,
|
...data,
|
||||||
user_id: user.id,
|
user_id: user.id,
|
||||||
valor: data.valor || null
|
valor: data.valor || null,
|
||||||
|
email_usuario: userData.email,
|
||||||
|
whatsapp_usuario: userData.whatsapp
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
if (error) throw error;
|
if (error) throw error;
|
||||||
|
|||||||
@ -207,12 +207,14 @@ export type Database = {
|
|||||||
descricao: string | null
|
descricao: string | null
|
||||||
dia_vencimento: number
|
dia_vencimento: number
|
||||||
dias_antecedencia: number
|
dias_antecedencia: number
|
||||||
|
email_usuario: string | null
|
||||||
hora_aviso: string
|
hora_aviso: string
|
||||||
id: string
|
id: string
|
||||||
nome_conta: string
|
nome_conta: string
|
||||||
updated_at: string
|
updated_at: string
|
||||||
user_id: string
|
user_id: string
|
||||||
valor: number | null
|
valor: number | null
|
||||||
|
whatsapp_usuario: string | null
|
||||||
}
|
}
|
||||||
Insert: {
|
Insert: {
|
||||||
ativo?: boolean
|
ativo?: boolean
|
||||||
@ -220,12 +222,14 @@ export type Database = {
|
|||||||
descricao?: string | null
|
descricao?: string | null
|
||||||
dia_vencimento: number
|
dia_vencimento: number
|
||||||
dias_antecedencia?: number
|
dias_antecedencia?: number
|
||||||
|
email_usuario?: string | null
|
||||||
hora_aviso?: string
|
hora_aviso?: string
|
||||||
id?: string
|
id?: string
|
||||||
nome_conta: string
|
nome_conta: string
|
||||||
updated_at?: string
|
updated_at?: string
|
||||||
user_id: string
|
user_id: string
|
||||||
valor?: number | null
|
valor?: number | null
|
||||||
|
whatsapp_usuario?: string | null
|
||||||
}
|
}
|
||||||
Update: {
|
Update: {
|
||||||
ativo?: boolean
|
ativo?: boolean
|
||||||
@ -233,12 +237,14 @@ export type Database = {
|
|||||||
descricao?: string | null
|
descricao?: string | null
|
||||||
dia_vencimento?: number
|
dia_vencimento?: number
|
||||||
dias_antecedencia?: number
|
dias_antecedencia?: number
|
||||||
|
email_usuario?: string | null
|
||||||
hora_aviso?: string
|
hora_aviso?: string
|
||||||
id?: string
|
id?: string
|
||||||
nome_conta?: string
|
nome_conta?: string
|
||||||
updated_at?: string
|
updated_at?: string
|
||||||
user_id?: string
|
user_id?: string
|
||||||
valor?: number | null
|
valor?: number | null
|
||||||
|
whatsapp_usuario?: string | null
|
||||||
}
|
}
|
||||||
Relationships: []
|
Relationships: []
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,11 +17,15 @@ interface ContaRecorrente {
|
|||||||
hora_aviso: string;
|
hora_aviso: string;
|
||||||
dias_antecedencia: number;
|
dias_antecedencia: number;
|
||||||
ativo: boolean;
|
ativo: boolean;
|
||||||
|
email_usuario: string | null;
|
||||||
|
whatsapp_usuario: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface AvisoData {
|
interface AvisoData {
|
||||||
conta_id: string;
|
conta_id: string;
|
||||||
user_id: string;
|
user_id: string;
|
||||||
|
email_usuario: string | null;
|
||||||
|
whatsapp_usuario: string | null;
|
||||||
nome_conta: string;
|
nome_conta: string;
|
||||||
descricao: string | null;
|
descricao: string | null;
|
||||||
valor: number | null;
|
valor: number | null;
|
||||||
@ -47,7 +51,7 @@ serve(async (req) => {
|
|||||||
|
|
||||||
console.log(`Executando verificação de avisos às ${horaAtual}`)
|
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
|
const { data: contas, error: contasError } = await supabase
|
||||||
.from('contas_recorrentes')
|
.from('contas_recorrentes')
|
||||||
.select('*')
|
.select('*')
|
||||||
@ -104,6 +108,8 @@ serve(async (req) => {
|
|||||||
const avisoData: AvisoData = {
|
const avisoData: AvisoData = {
|
||||||
conta_id: conta.id,
|
conta_id: conta.id,
|
||||||
user_id: conta.user_id,
|
user_id: conta.user_id,
|
||||||
|
email_usuario: conta.email_usuario,
|
||||||
|
whatsapp_usuario: conta.whatsapp_usuario,
|
||||||
nome_conta: conta.nome_conta,
|
nome_conta: conta.nome_conta,
|
||||||
descricao: conta.descricao,
|
descricao: conta.descricao,
|
||||||
valor: conta.valor,
|
valor: conta.valor,
|
||||||
@ -139,7 +145,7 @@ serve(async (req) => {
|
|||||||
|
|
||||||
if (webhookResponse.ok) {
|
if (webhookResponse.ok) {
|
||||||
avisosEnviados++
|
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 {
|
} else {
|
||||||
console.error(`❌ Erro ao enviar webhook para: ${conta.nome_conta}`)
|
console.error(`❌ Erro ao enviar webhook para: ${conta.nome_conta}`)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
Loading…
Reference in New Issue
Block a user