-- Script SQL para criar estrutura de Clientes BMS e Projetos

CREATE TABLE IF NOT EXISTS clientes_bms (
    id_cliente INT AUTO_INCREMENT PRIMARY KEY,
    nome_cliente VARCHAR(150) NOT NULL,
    documento VARCHAR(30) DEFAULT NULL,
    email VARCHAR(150) DEFAULT NULL,
    telefone VARCHAR(30) DEFAULT NULL,
    ativo CHAR(1) NOT NULL DEFAULT 'S',
    data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uk_clientes_bms_nome (nome_cliente)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS clientes_bms_contatos (
    id_contato INT AUTO_INCREMENT PRIMARY KEY,
    id_cliente_fk INT NOT NULL,
    nome_contato VARCHAR(150) NOT NULL,
    cargo VARCHAR(100) DEFAULT NULL,
    email VARCHAR(150) DEFAULT NULL,
    telefone VARCHAR(30) DEFAULT NULL,
    observacoes TEXT,
    ativo CHAR(1) NOT NULL DEFAULT 'S',
    data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    CONSTRAINT fk_clientes_bms_contatos_cliente FOREIGN KEY (id_cliente_fk) REFERENCES clientes_bms(id_cliente) ON DELETE CASCADE,
    INDEX idx_contatos_cliente (id_cliente_fk)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS projetos (
    id_projeto INT AUTO_INCREMENT PRIMARY KEY,
    id_cliente_fk INT NOT NULL,
    nome_projeto VARCHAR(200) NOT NULL,
    data_inicio DATE DEFAULT NULL,
    data_termino DATE DEFAULT NULL,
    ativo CHAR(1) NOT NULL DEFAULT 'S',
    descricao TEXT,
    observacoes TEXT,
    data_criacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_atualizacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    CONSTRAINT fk_projetos_cliente FOREIGN KEY (id_cliente_fk) REFERENCES clientes_bms(id_cliente) ON DELETE RESTRICT,
    INDEX idx_projetos_cliente (id_cliente_fk),
    INDEX idx_projetos_ativo (ativo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Ajustes opcionais para bases já existentes
ALTER TABLE questionario_template
    ADD COLUMN IF NOT EXISTS id_projeto_fk INT NULL AFTER nome;

ALTER TABLE pesquisas
    ADD COLUMN IF NOT EXISTS id_projeto_fk INT NULL AFTER id_questionario_template_fk,
    ADD COLUMN IF NOT EXISTS idbase_fk INT NULL AFTER id_projeto_fk;

-- Para bancos que suportam ADD CONSTRAINT IF NOT EXISTS, habilite as FKs abaixo
-- ALTER TABLE questionario_template ADD CONSTRAINT fk_questionario_template_projeto FOREIGN KEY (id_projeto_fk) REFERENCES projetos(id_projeto) ON DELETE SET NULL;
-- ALTER TABLE pesquisas ADD CONSTRAINT fk_pesquisas_projeto FOREIGN KEY (id_projeto_fk) REFERENCES projetos(id_projeto) ON DELETE SET NULL;
