CREATE TABLE IF NOT EXISTS whatsapp_config (
    id INT AUTO_INCREMENT PRIMARY KEY,
    provider_name VARCHAR(100) NOT NULL DEFAULT 'Webhook genérico',
    webhook_url VARCHAR(255) NULL,
    auth_token VARCHAR(255) NULL,
    webhook_token VARCHAR(255) NULL,
    telefone_remetente VARCHAR(30) NULL,
    ativo TINYINT(1) NOT NULL DEFAULT 0,
    auto_notify_new TINYINT(1) NOT NULL DEFAULT 1,
    auto_notify_status TINYINT(1) NOT NULL DEFAULT 1,
    auto_notify_sla TINYINT(1) NOT NULL DEFAULT 1,
    auto_create_from_webhook TINYINT(1) NOT NULL DEFAULT 1,
    template_nova_ocorrencia TEXT NULL,
    template_status TEXT NULL,
    template_sla TEXT NULL,
    updated_em DATETIME NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS whatsapp_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    direction ENUM('IN','OUT') NOT NULL DEFAULT 'OUT',
    evento VARCHAR(50) NOT NULL,
    telefone VARCHAR(30) NULL,
    protocolo VARCHAR(30) NULL,
    payload_json LONGTEXT NULL,
    response_json LONGTEXT NULL,
    status_code INT NOT NULL DEFAULT 0,
    sucesso TINYINT(1) NOT NULL DEFAULT 0,
    mensagem VARCHAR(255) NULL,
    criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_whatsapp_logs_evento (evento),
    INDEX idx_whatsapp_logs_protocolo (protocolo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS whatsapp_dispatches (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ocorrencia_id INT NOT NULL,
    gatilho VARCHAR(50) NOT NULL,
    referencia VARCHAR(120) NOT NULL,
    telefone VARCHAR(30) NULL,
    mensagem TEXT NULL,
    payload_json LONGTEXT NULL,
    response_json LONGTEXT NULL,
    status_code INT NOT NULL DEFAULT 0,
    sucesso TINYINT(1) NOT NULL DEFAULT 0,
    criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY uniq_whatsapp_dispatch (ocorrencia_id, gatilho, referencia),
    CONSTRAINT fk_whatsapp_dispatch_ocorrencia FOREIGN KEY (ocorrencia_id) REFERENCES ocorrencias(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO whatsapp_config (
    provider_name, webhook_url, auth_token, webhook_token, telefone_remetente, ativo,
    auto_notify_new, auto_notify_status, auto_notify_sla, auto_create_from_webhook,
    template_nova_ocorrencia, template_status, template_sla, updated_em
)
SELECT
    'Webhook genérico', '', '', '', '', 0,
    1, 1, 1, 1,
    'Olá {nome}, sua solicitação foi registrada com o protocolo {protocolo}. Serviço: {servico}. Acompanhe em {link_consulta}',
    'Olá {nome}, o protocolo {protocolo} foi atualizado para {status}. Serviço: {servico}.',
    'Alerta: o protocolo {protocolo} está {sla_label}. Serviço: {servico}.',
    NOW()
WHERE NOT EXISTS (SELECT 1 FROM whatsapp_config);
