-- Integração WhatsApp Business API

CREATE TABLE IF NOT EXISTS whatsapp_config (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- API WhatsApp Business
    phone_number_id VARCHAR(50) NULL,
    access_token TEXT NULL,
    business_account_id VARCHAR(50) NULL,
    app_id VARCHAR(50) NULL,
    app_secret VARCHAR(255) NULL,
    
    -- Webhook
    webhook_verify_token VARCHAR(255) NULL,
    webhook_url VARCHAR(500) NULL,
    
    -- Configurações
    enviar_notificacoes BOOLEAN DEFAULT TRUE,
    templates_aprovados BOOLEAN DEFAULT FALSE,
    
    -- Status
    ativo BOOLEAN DEFAULT FALSE,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    UNIQUE KEY uk_tenant (tenant_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Templates de mensagens
CREATE TABLE IF NOT EXISTS whatsapp_templates (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Template
    nome VARCHAR(255) NOT NULL,
    categoria VARCHAR(50) NULL, -- boas_vindas, pedido, cobranca, etc
    conteudo TEXT NOT NULL,
    
    -- Variáveis
    variaveis_json TEXT NULL, -- JSON com variáveis disponíveis
    
    -- Status
    aprovado BOOLEAN DEFAULT FALSE,
    template_id_whatsapp VARCHAR(100) NULL, -- ID do template no WhatsApp
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_tenant (tenant_id),
    INDEX idx_categoria (categoria),
    INDEX idx_aprovado (aprovado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Mensagens enviadas/recebidas
CREATE TABLE IF NOT EXISTS whatsapp_mensagens (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Mensagem
    mensagem_id_whatsapp VARCHAR(100) NULL, -- ID da mensagem no WhatsApp
    tipo ENUM('enviada', 'recebida') NOT NULL,
    direcao ENUM('outbound', 'inbound') NOT NULL,
    
    -- Destinatário/Remetente
    numero_telefone VARCHAR(20) NOT NULL,
    nome_contato VARCHAR(255) NULL,
    
    -- Conteúdo
    tipo_mensagem ENUM('text', 'template', 'image', 'document', 'audio', 'video') DEFAULT 'text',
    conteudo TEXT NULL,
    template_id BIGINT UNSIGNED NULL,
    
    -- Status
    status ENUM('enviando', 'enviada', 'entregue', 'lida', 'erro') DEFAULT 'enviando',
    status_whatsapp VARCHAR(50) NULL,
    
    -- Vinculação
    cliente_id BIGINT UNSIGNED NULL,
    pedido_id BIGINT UNSIGNED NULL,
    
    -- Metadados
    dados_json TEXT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_tenant (tenant_id),
    INDEX idx_numero (numero_telefone),
    INDEX idx_tipo (tipo),
    INDEX idx_status (status),
    INDEX idx_cliente (cliente_id),
    INDEX idx_pedido (pedido_id),
    INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

