-- +goose Up
-- +goose StatementBegin

-- Templates de mensagem (email/whatsapp) manuais
CREATE TABLE IF NOT EXISTS mensagem_templates (
    id          UUID        PRIMARY KEY DEFAULT uuid_generate_v4(),
    tenant_id   UUID        NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
    nome        TEXT        NOT NULL,
    canal       TEXT        NOT NULL DEFAULT 'email' CHECK (canal IN ('email','whatsapp','sms')),
    assunto     TEXT        DEFAULT '',
    corpo       TEXT        NOT NULL,
    tipo        TEXT        NOT NULL DEFAULT 'geral',
    ativo       BOOLEAN     NOT NULL DEFAULT true,
    criado_em   TIMESTAMPTZ NOT NULL DEFAULT now(),
    atualizado_em TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_templates_tenant ON mensagem_templates(tenant_id, canal, ativo);
ALTER TABLE mensagem_templates ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON mensagem_templates
    USING (tenant_id = current_setting('app.tenant_id', true)::uuid);

-- Campos de contato nas propostas (para envio sem depender de IA)
ALTER TABLE propostas
    ADD COLUMN IF NOT EXISTS contato_email     TEXT DEFAULT '',
    ADD COLUMN IF NOT EXISTS contato_whatsapp  TEXT DEFAULT '',
    ADD COLUMN IF NOT EXISTS contato_nome      TEXT DEFAULT '';

-- Seeds: templates padrão por tenant (inseridos via trigger na criação do tenant)
-- Inserimos para tenants já existentes via migration
INSERT INTO mensagem_templates (id, tenant_id, nome, canal, assunto, corpo, tipo)
SELECT
    uuid_generate_v4(),
    t.id,
    'Proposta Comercial - Padrão',
    'email',
    'Proposta de Uniformes Escolares - {{escola}}',
    E'Prezado(a) {{contato}},\n\nÉ um prazer entrar em contato!\n\nSegue em anexo nossa proposta comercial para fornecimento de uniformes escolares para {{escola}}.\n\n📋 RESUMO DA PROPOSTA:\n{{itens}}\n\n💰 Valor Total: {{total}}\n📅 Validade: {{validade}}\n\n✅ Nossos diferenciais:\n- Bordado personalizado incluso\n- Tecido Piquet Premium anti-pilling\n- Cores firmes garantidas por 80 lavagens\n- Grade completa PP ao GGG\n\nFicamos à disposição para quaisquer dúvidas.\n\nAtenciosamente,\n{{vendedor}}\n{{empresa}}\n{{telefone}}',
    'proposta'
FROM tenants t
WHERE NOT EXISTS (
    SELECT 1 FROM mensagem_templates mt
    WHERE mt.tenant_id = t.id AND mt.tipo = 'proposta' AND mt.canal = 'email'
);

INSERT INTO mensagem_templates (id, tenant_id, nome, canal, assunto, corpo, tipo)
SELECT
    uuid_generate_v4(),
    t.id,
    'Proposta - WhatsApp',
    'whatsapp',
    '',
    E'Olá {{contato}}! 👋\n\nTudo bem? Sou {{vendedor}} da {{empresa}}.\n\nPreparei uma proposta especial de uniformes para {{escola}}:\n\n{{itens}}\n\n💰 *Total: {{total}}*\n📅 Validade: {{validade}}\n\n✅ Bordado incluso | Frete grátis acima de 300 pç\n\nPosso enviar mais detalhes ou agendar uma visita com amostras? 😊',
    'proposta'
FROM tenants t
WHERE NOT EXISTS (
    SELECT 1 FROM mensagem_templates mt
    WHERE mt.tenant_id = t.id AND mt.tipo = 'proposta' AND mt.canal = 'whatsapp'
);

INSERT INTO mensagem_templates (id, tenant_id, nome, canal, assunto, corpo, tipo)
SELECT
    uuid_generate_v4(),
    t.id,
    'Follow-up Proposta',
    'email',
    'Acompanhamento - Proposta {{numero}} - {{escola}}',
    E'Prezado(a) {{contato}},\n\nEspero que esteja bem!\n\nGostaria de acompanhar nossa proposta {{numero}} enviada anteriormente para {{escola}}.\n\nTivemos a oportunidade de analisar nossa oferta? Fico à disposição para esclarecer dúvidas ou ajustar qualquer detalhe.\n\nAtenciosamente,\n{{vendedor}}\n{{empresa}}',
    'followup'
FROM tenants t
WHERE NOT EXISTS (
    SELECT 1 FROM mensagem_templates mt
    WHERE mt.tenant_id = t.id AND mt.tipo = 'followup' AND mt.canal = 'email'
);

INSERT INTO mensagem_templates (id, tenant_id, nome, canal, assunto, corpo, tipo)
SELECT
    uuid_generate_v4(),
    t.id,
    'Reativação de Lead',
    'whatsapp',
    '',
    E'Olá {{contato}}! 😊\n\nTudo bem? Sou {{vendedor}} da {{empresa}}.\n\nFaz um tempo que não conversamos! Gostaria de saber se ainda há interesse em uniformes para {{escola}}.\n\nTemos novidades no nosso catálogo e condições especiais para o período de matrículas.\n\nPosso te enviar nossa tabela atualizada?',
    'reativacao'
FROM tenants t
WHERE NOT EXISTS (
    SELECT 1 FROM mensagem_templates mt
    WHERE mt.tenant_id = t.id AND mt.tipo = 'reativacao' AND mt.canal = 'whatsapp'
);

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS mensagem_templates CASCADE;
ALTER TABLE propostas DROP COLUMN IF EXISTS contato_email;
ALTER TABLE propostas DROP COLUMN IF EXISTS contato_whatsapp;
ALTER TABLE propostas DROP COLUMN IF EXISTS contato_nome;
-- +goose StatementEnd
