Files
dbmaker/src/lib/mutations.ts

225 lines
5.4 KiB
TypeScript

// @ts-nocheck
import { supabase } from './supabase'
// ============================================
// TEMPLATES MUTATIONS
// ============================================
export const createTemplate = async (data: {
nome: string
tipo: 'novo' | 'derivado'
template_pai_id?: string | null
topicos_selecionados: string[]
descricao?: string
}) => {
const { data: result, error } = await supabase
.from('templates_customizados')
.insert([
{
nome: data.nome,
tipo: data.tipo,
template_pai_id: data.template_pai_id || null,
topicos_selecionados: data.topicos_selecionados,
total_topicos: data.topicos_selecionados.length,
total_obrigatorios: data.topicos_selecionados.length, // TODO: calcular corretamente
descricao: data.descricao || null,
ativo: true,
} as any,
])
.select()
if (error) throw error
return result?.[0]
}
export const updateTemplate = async (
id: string,
data: {
nome?: string
topicos_selecionados?: string[]
descricao?: string
}
) => {
const { data: result, error } = await supabase
.from('templates_customizados')
.update({
...data,
total_topicos: data.topicos_selecionados?.length,
} as any)
.eq('id', id)
.select()
if (error) throw error
return result?.[0]
}
export const deleteTemplate = async (id: string) => {
const { error } = await supabase
.from('templates_customizados')
.update({ ativo: false } as any)
.eq('id', id)
if (error) throw error
}
// ============================================
// DATABOOKS MUTATIONS
// ============================================
export const createDatabook = async (data: {
numero_projeto: string
nome_projeto: string
cliente_id?: string | null
template_id?: string | null
cliente_nome: string
cliente_contato: string
cliente_email: string
cliente_telefone: string
produto_nome: string
produto_tipo: string
produto_descricao: string
produto_normas: string[]
ordem_compra: string
data_inicio: string
data_entrega_prevista: string
titulo_principal: string
subtitulo: string
cor_primaria: string
cor_secundaria: string
tamanho_pagina: 'A4' | 'Letter'
orientacao: 'retrato' | 'paisagem'
}) => {
// Criar projeto
const { data: projeto, error: projetoError } = await supabase
.from('projetos')
.insert([
{
numero_projeto: data.numero_projeto,
nome_projeto: data.nome_projeto,
cliente_id: data.cliente_id || null,
template_id: data.template_id || null,
status: 'rascunho',
progresso_percentual: 0,
} as any,
])
.select()
if (projetoError) throw projetoError
const projetoId = projeto?.[0]?.id
// Criar databook_mestre
const { data: databook, error: databookError } = await supabase
.from('databooks_mestres')
.insert([
{
projeto_id: projetoId,
cliente_nome: data.cliente_nome,
cliente_contato: data.cliente_contato,
cliente_email: data.cliente_email,
cliente_telefone: data.cliente_telefone,
produto_nome: data.produto_nome,
produto_tipo: data.produto_tipo,
produto_descricao: data.produto_descricao,
produto_normas: data.produto_normas,
numero_projeto: data.numero_projeto,
ordem_compra: data.ordem_compra,
data_inicio: data.data_inicio,
data_entrega_prevista: data.data_entrega_prevista,
titulo_principal: data.titulo_principal,
subtitulo: data.subtitulo,
cor_primaria: data.cor_primaria,
cor_secundaria: data.cor_secundaria,
tamanho_pagina: data.tamanho_pagina,
orientacao: data.orientacao,
} as any,
])
.select()
if (databookError) throw databookError
return { projeto: projeto?.[0], databook: databook?.[0] }
}
export const updateDatabook = async (
projetoId: string,
data: {
nome_projeto?: string
status?: string
progresso_percentual?: number
}
) => {
const { data: result, error } = await supabase
.from('projetos')
.update(data as any)
.eq('id', projetoId)
.select()
if (error) throw error
return result?.[0]
}
export const deleteDatabook = async (projetoId: string) => {
const { error } = await supabase
.from('projetos')
.delete()
.eq('id', projetoId)
if (error) throw error
}
// ============================================
// CLIENTES MUTATIONS
// ============================================
export const createCliente = async (data: {
nome: string
contato?: string
email?: string
telefone?: string
}) => {
const { data: result, error } = await supabase
.from('clientes')
.insert([
{
nome: data.nome,
contato: data.contato || null,
email: data.email || null,
telefone: data.telefone || null,
ativo: true,
} as any,
])
.select()
if (error) throw error
return result?.[0]
}
export const updateCliente = async (
id: string,
data: {
nome?: string
contato?: string
email?: string
telefone?: string
}
) => {
const { data: result, error } = await supabase
.from('clientes')
.update(data as any)
.eq('id', id)
.select()
if (error) throw error
return result?.[0]
}
export const deleteCliente = async (id: string) => {
const { error } = await supabase
.from('clientes')
.update({ ativo: false } as any)
.eq('id', id)
if (error) throw error
}