-- ============================================================
-- CHATC2 - SCRIPT DE CRIAÇÃO DO BANCO (IBExpert)
-- ============================================================
-- Execute cada bloco separadamente no IBExpert SQL Editor.
-- Se algum comando falhar com "already exists", ignore e continue.
-- ============================================================

-- ============================================================
-- TABELA DE CONTROLE DE MIGRAÇÕES
-- ============================================================
CREATE TABLE CHATC2_CONTROLE_MIGRACOES (
  MIG_ID INTEGER NOT NULL PRIMARY KEY,
  MIG_DESCRICAO VARCHAR(200),
  MIG_DATA_EXECUCAO TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  MIG_STATUS CHAR(1) DEFAULT 'A'
);

-- ============================================================
-- 1. USU_TIPO_CHAT em USUARIOS
-- ============================================================
ALTER TABLE USUARIOS ADD USU_TIPO_CHAT CHAR(1) DEFAULT 'A';

-- ============================================================
-- 2. Tabela CHATC2_INSTANCIAS
-- ============================================================
CREATE TABLE CHATC2_INSTANCIAS (
  INS_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  INS_EMPRESA_ID INTEGER NOT NULL,
  INS_NOME VARCHAR(100),
  INS_URL VARCHAR(500),
  INS_API_KEY VARCHAR(500),
  INS_INSTANCE_NAME VARCHAR(100),
  INS_STATUS CHAR(1) DEFAULT 'D',
  INS_QR_CODE BLOB SUB_TYPE 0,
  INS_DT_CONEXAO TIMESTAMP,
  INS_DT_CADASTRO TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INS_SITUACAO CHAR(1) DEFAULT 'A'
);

-- ============================================================
-- 3. Tabela CHATC2_EQUIPES
-- ============================================================
CREATE TABLE CHATC2_EQUIPES (
  EQU_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  EQU_EMPRESA_ID INTEGER NOT NULL,
  EQU_NOME VARCHAR(100),
  EQU_ORDEM INTEGER DEFAULT 0,
  EQU_SITUACAO CHAR(1) DEFAULT 'A'
);

-- ============================================================
-- 4. Tabela CHATC2_USU_EQUIPES
-- ============================================================
CREATE TABLE CHATC2_USU_EQUIPES (
  EQU_EQUIPE_ID INTEGER NOT NULL,
  EQU_USUARIO_ID INTEGER NOT NULL,
  PRIMARY KEY (EQU_EQUIPE_ID, EQU_USUARIO_ID)
);

-- ============================================================
-- 5. Tabela CHATC2_ETIQUETAS
-- ============================================================
CREATE TABLE CHATC2_ETIQUETAS (
  ETI_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  ETI_EMPRESA_ID INTEGER NOT NULL,
  ETI_NOME VARCHAR(50),
  ETI_COR VARCHAR(7) DEFAULT '#667eea',
  ETI_SITUACAO CHAR(1) DEFAULT 'A'
);

-- ============================================================
-- 6. Tabela CHATC2_CONVERSAS
-- ============================================================
CREATE TABLE CHATC2_CONVERSAS (
  CON_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  CON_EMPRESA_ID INTEGER NOT NULL,
  CON_INSTANCIA_ID INTEGER,
  CON_CLIENTE_ID INTEGER,
  CON_NUMERO VARCHAR(20),
  CON_NOME_CONTATO VARCHAR(100),
  CON_STATUS CHAR(1) DEFAULT 'E',
  CON_USUARIO_ID INTEGER,
  CON_EQUIPE_ID INTEGER,
  CON_DT_INICIO TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  CON_DT_FINAL TIMESTAMP,
  CON_DT_ULTIMA_MSG TIMESTAMP,
  CON_SAUDACAO_ENVIADA CHAR(1) DEFAULT 'N',
  CON_CSAT_ENVIADO CHAR(1) DEFAULT 'N',
  CON_PRIMEIRA_MSG TIMESTAMP,
  CON_ORIGEM VARCHAR(20) DEFAULT 'whatsapp',
  CON_SITUACAO CHAR(1) DEFAULT 'A'
);

-- ============================================================
-- 7. Tabela CHATC2_CONVERSAS_MENSAGENS
-- ============================================================
CREATE TABLE CHATC2_CONVERSAS_MENSAGENS (
  CME_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  CME_CONVERSA_ID INTEGER NOT NULL,
  CME_REMETENTE CHAR(1) DEFAULT 'C',
  CME_USUARIO_ID INTEGER,
  CME_MENSAGEM BLOB SUB_TYPE 1,
  CME_TEXTO VARCHAR(4000),
  CME_TIPO VARCHAR(20) DEFAULT 'text',
  CME_DT_ENVIO TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  CME_PRIVADA CHAR(1) DEFAULT 'N',
  CME_LIDA CHAR(1) DEFAULT 'N',
  CME_MIDIA_ID INTEGER,
  CME_SITUACAO CHAR(1) DEFAULT 'A'
);

-- ============================================================
-- 8. Tabela CHATC2_MENSAGENS_ATENDIMENTOS
-- ============================================================
CREATE TABLE CHATC2_MENSAGENS_ATENDIMENTOS (
  MAT_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  MAT_CONVERSA_ID INTEGER,
  MAT_MENSAGEM_ID INTEGER,
  MAT_NOME_ARQUIVO VARCHAR(255),
  MAT_TIPO_ARQUIVO VARCHAR(50),
  MAT_ARQUIVO BLOB SUB_TYPE 0,
  MAT_DT_CADASTRO TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  MAT_SITUACAO CHAR(1) DEFAULT 'A'
);

-- ============================================================
-- 9. Tabela CHATC2_CONVERSAS_ETIQUETAS
-- ============================================================
CREATE TABLE CHATC2_CONVERSAS_ETIQUETAS (
  CET_CONVERSA_ID INTEGER NOT NULL,
  CET_ETIQUETA_ID INTEGER NOT NULL,
  PRIMARY KEY (CET_CONVERSA_ID, CET_ETIQUETA_ID)
);

-- ============================================================
-- 10. Tabela CHATC2_CSAT_AVALIACOES
-- ============================================================
CREATE TABLE CHATC2_CSAT_AVALIACOES (
  CSA_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  CSA_CONVERSA_ID INTEGER,
  CSA_EMPRESA_ID INTEGER,
  CSA_CLIENTE_ID INTEGER,
  CSA_NOTA INTEGER,
  CSA_COMENTARIO VARCHAR(500),
  CSA_DT_AVALIACAO TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ============================================================
-- 11. Tabela CHATC2_CONFIGURACOES_EMPRESA
-- ============================================================
CREATE TABLE CHATC2_CONFIGURACOES_EMPRESA (
  CFE_EMPRESA_ID INTEGER NOT NULL PRIMARY KEY,
  CFE_INSTANCIA_PADRAO_ID INTEGER,
  CFE_FOTO_CELULAR CHAR(1) DEFAULT 'N',
  CFE_SAUDACAO_ATIVA CHAR(1) DEFAULT 'S',
  CFE_SAUDACAO_MENSAGEM VARCHAR(500),
  CFE_CSAT_ATIVO CHAR(1) DEFAULT 'N',
  CFE_CSAT_MENSAGEM VARCHAR(500) DEFAULT 'Avalie seu atendimento de 1 a 5 estrelas'
);

-- ============================================================
-- 12. EQU_ORDEM em CHATC2_EQUIPES (já incluso no CREATE TABLE acima)
-- ============================================================
-- Já existe. Pule este comando.

-- ============================================================
-- 13. Campos de triagem
-- ============================================================
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_ENVIAR_NOME_USUARIO CHAR(1) DEFAULT 'N';
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_TRIAGEM_ATIVA CHAR(1) DEFAULT 'N';
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_TRIAGEM_MSG_WELCOME VARCHAR(500);
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_TRIAGEM_MSG_AFTER VARCHAR(500);
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_TRIAGEM_BOLETO_NUMERO VARCHAR(10) DEFAULT '0';

-- ============================================================
-- 14. CON_MENU_ESTADO em conversas
-- ============================================================
ALTER TABLE CHATC2_CONVERSAS ADD CON_MENU_ESTADO VARCHAR(100);

-- ============================================================
-- 15. CON_ETIQUETAS_DESC em conversas
-- ============================================================
ALTER TABLE CHATC2_CONVERSAS ADD CON_ETIQUETAS_DESC VARCHAR(500);

-- ============================================================
-- 16. Tabela CHATC2_MENUS_EMPRESA
-- ============================================================
CREATE TABLE CHATC2_MENUS_EMPRESA (
  MNE_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  MNE_EMPRESA_ID INTEGER,
  MNE_EQUIPE_ID INTEGER,
  MNE_MENU_PAI_ID INTEGER,
  MNE_ORDEM INTEGER DEFAULT 0,
  MNE_TITULO VARCHAR(100),
  MNE_TIPO CHAR(1) DEFAULT 'M',
  MNE_TEXTO BLOB SUB_TYPE TEXT,
  MNE_ACAO_ROTA VARCHAR(100),
  MNE_ACAO_METODO VARCHAR(10),
  MNE_ACAO_PROMPT VARCHAR(300),
  MNE_SITUACAO CHAR(1) DEFAULT 'A'
);

-- ============================================================
-- 17. Novos campos em conversas
-- ============================================================
ALTER TABLE CHATC2_CONVERSAS ADD CON_USUARIO_NOME VARCHAR(100);
ALTER TABLE CHATC2_CONVERSAS ADD CON_EQUIPE_NOME VARCHAR(100);

-- ============================================================
-- 18. Etiquetas nos menus
-- ============================================================
ALTER TABLE CHATC2_MENUS_EMPRESA ADD MNE_ETIQUETA_IDS VARCHAR(200);

-- ============================================================
-- 19. Transcrição de áudio
-- ============================================================
ALTER TABLE CHATC2_MENSAGENS_ATENDIMENTOS ADD MAT_TRANSCRICAO BLOB SUB_TYPE TEXT;

-- ============================================================
-- 20. Generators (sequences)
-- ============================================================
CREATE GENERATOR GEN_CHATC2_CONVERSAS;
CREATE GENERATOR GEN_CONVERSAS_MENSAGENS;
CREATE GENERATOR GEN_MENSAGENS_ATENDIMENTOS;
CREATE GENERATOR GEN_CHATC2_EQUIPES;
CREATE GENERATOR GEN_CHATC2_ETIQUETAS;
CREATE GENERATOR GEN_CHATC2_INSTANCIAS;
CREATE GENERATOR GEN_CHATC2_MENUS_EMPRESA;
CREATE GENERATOR GEN_CHATC2_CSAT_AVALIACOES;
CREATE GENERATOR GEN_CHATC2_MOTIVOS_ATENDIMENTO;
CREATE GENERATOR GEN_CHATC2_AGENDAMENTOS;

-- ============================================================
-- 21. Índices
-- ============================================================
CREATE INDEX IDX_CLIENTES_CELULAR ON CLIENTES (CLI_CELULAR);
CREATE INDEX IDX_CLIENTES_FONE1 ON CLIENTES (CLI_FONE1);
CREATE INDEX IDX_CLIENTES_FONE2 ON CLIENTES (CLI_FONE2);
CREATE INDEX IDX_CLIENTES_EMPRESA ON CLIENTES (CLI_EMPRESA_ID);
CREATE INDEX IDX_CONV_NUMERO_EMPRESA ON CHATC2_CONVERSAS (CON_NUMERO, CON_EMPRESA_ID);
CREATE INDEX IDX_CONV_STATUS ON CHATC2_CONVERSAS (CON_STATUS);

-- ============================================================
-- 22. Mensagem e etiqueta por equipe
-- ============================================================
ALTER TABLE CHATC2_EQUIPES ADD EQU_MENSAGEM VARCHAR(500);
ALTER TABLE CHATC2_EQUIPES ADD EQU_ETIQUETA_ID INTEGER;

-- ============================================================
-- 23. Tabela de agendamentos
-- ============================================================
CREATE TABLE CHATC2_CONVERSAS_AGENDAMENTOS (
  CAG_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  CAG_CONVERSA_ID INTEGER NOT NULL,
  CAG_EMPRESA_ID INTEGER,
  CAG_DATA DATE NOT NULL,
  CAG_HORA TIME,
  CAG_NOTA VARCHAR(300),
  CAG_STATUS CHAR(1) DEFAULT 'P',
  CAG_USUARIO_ID INTEGER,
  CAG_DT_CRIACAO TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ============================================================
-- 24. Fluxo de resolução
-- ============================================================
CREATE TABLE "CHATC2_MOTIVOS_ATENDIMENTO" (
  MOT_CODIGO_ID INTEGER NOT NULL PRIMARY KEY,
  MOT_EMPRESA_ID INTEGER,
  MOT_DESCRICAO VARCHAR(150),
  MOT_SITUACAO CHAR(1) DEFAULT 'A'
);
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_MOTIVO_VISUALIZAR CHAR(1) DEFAULT 'N';
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_MOTIVO_OBRIGATORIO CHAR(1) DEFAULT 'N';
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_RESOLUCAO_VISUALIZAR CHAR(1) DEFAULT 'N';
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_RESOLUCAO_OBRIGATORIO CHAR(1) DEFAULT 'N';
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_ENVIAR_BOLETO CHAR(1) DEFAULT 'N';
ALTER TABLE CHATC2_CONFIGURACOES_EMPRESA ADD CFE_RESOLUCAO_SALVAR_MSC CHAR(1) DEFAULT 'N';
ALTER TABLE CHATC2_CONVERSAS ADD CON_MOTIVO_ID INTEGER;
ALTER TABLE CHATC2_CONVERSAS ADD CON_RESOLUCAO VARCHAR(4000);

-- ============================================================
-- REGISTRA MIGRAÇÕES COMO EXECUTADAS
-- ============================================================
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (1, 'USU_TIPO_CHAT');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (2, 'Tabela CHATC2_INSTANCIAS');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (3, 'Tabela CHATC2_EQUIPES');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (4, 'Tabela CHATC2_USU_EQUIPES');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (5, 'Tabela CHATC2_ETIQUETAS');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (6, 'Tabela CHATC2_CONVERSAS');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (7, 'Tabela CHATC2_CONVERSAS_MENSAGENS');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (8, 'Tabela CHATC2_MENSAGENS_ATENDIMENTOS');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (9, 'Tabela CHATC2_CONVERSAS_ETIQUETAS');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (10, 'Tabela CHATC2_CSAT_AVALIACOES');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (11, 'Tabela CHATC2_CONFIGURACOES_EMPRESA');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (12, 'EQU_ORDEM');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (13, 'Campos de triagem');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (14, 'CON_MENU_ESTADO');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (15, 'CON_ETIQUETAS_DESC');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (16, 'Tabela CHATC2_MENUS_EMPRESA');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (17, 'CON_USUARIO_NOME e CON_EQUIPE_NOME');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (18, 'MNE_ETIQUETA_IDS');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (19, 'MAT_TRANSCRICAO');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (20, 'Generators');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (21, 'Índices');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (22, 'Mensagem/etiqueta por equipe');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (23, 'Agendamentos');
INSERT INTO CHATC2_CONTROLE_MIGRACOES (MIG_ID, MIG_DESCRICAO) VALUES (24, 'Fluxo de resolução');
