-- Alterar a tabela contatos para adicionar novos campos
ALTER TABLE contatos 
ADD COLUMN data_nascimento DATE AFTER nome,
ADD COLUMN genero ENUM('Masculino', 'Feminino', 'Outro', 'Prefiro não informar') AFTER data_nascimento,

-- Campos de endereço
ADD COLUMN endereco_rua VARCHAR(255) AFTER genero,
ADD COLUMN endereco_numero VARCHAR(20) AFTER endereco_rua,
ADD COLUMN endereco_bairro VARCHAR(100) AFTER endereco_numero,
ADD COLUMN endereco_cidade VARCHAR(100) AFTER endereco_bairro,
ADD COLUMN endereco_estado CHAR(2) AFTER endereco_cidade,
ADD COLUMN endereco_cep VARCHAR(9) AFTER endereco_estado,

-- Campos de contato
ADD COLUMN telefone_fixo VARCHAR(20) AFTER endereco_cep,
ADD COLUMN telefone_celular VARCHAR(20) AFTER telefone_fixo,
ADD COLUMN whatsapp VARCHAR(20) AFTER telefone_celular,

-- Redes sociais
ADD COLUMN facebook VARCHAR(255) AFTER whatsapp,
ADD COLUMN twitter VARCHAR(255) AFTER facebook,
ADD COLUMN instagram VARCHAR(255) AFTER twitter,

-- Campos profissionais e interesses
ADD COLUMN profissao VARCHAR(100) AFTER instagram,
ADD COLUMN interesses TEXT AFTER profissao,

-- Campos de controle
ADD COLUMN preferencia_comunicacao ENUM('Email', 'Telefone', 'WhatsApp', 'Carta') AFTER interesses,
ADD COLUMN vinculo_politico VARCHAR(100) AFTER preferencia_comunicacao,
ADD COLUMN ultima_interacao TIMESTAMP NULL AFTER vinculo_politico,
ADD COLUMN observacoes TEXT AFTER ultima_interacao,

-- Campos de geolocalização
ADD COLUMN latitude DECIMAL(10, 8) AFTER observacoes,
ADD COLUMN longitude DECIMAL(11, 8) AFTER latitude;

-- Criar tabela para histórico de interações
CREATE TABLE IF NOT EXISTS contatos_interacoes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    contato_id INT NOT NULL,
    tipo_interacao VARCHAR(50) NOT NULL,
    descricao TEXT,
    data_interacao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    usuario_id INT,
    FOREIGN KEY (contato_id) REFERENCES contatos(id) ON DELETE CASCADE,
    FOREIGN KEY (usuario_id) REFERENCES users(id)
);

-- Criar tabela para anexos
CREATE TABLE IF NOT EXISTS contatos_anexos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    contato_id INT NOT NULL,
    nome_arquivo VARCHAR(255) NOT NULL,
    tipo_arquivo VARCHAR(100) NOT NULL,
    caminho_arquivo VARCHAR(255) NOT NULL,
    descricao TEXT,
    data_upload TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    usuario_id INT,
    FOREIGN KEY (contato_id) REFERENCES contatos(id) ON DELETE CASCADE,
    FOREIGN KEY (usuario_id) REFERENCES users(id)
);

-- Adicionar índices para melhor performance
ALTER TABLE contatos
ADD INDEX idx_data_nascimento (data_nascimento),
ADD INDEX idx_endereco_cidade (endereco_cidade),
ADD INDEX idx_endereco_estado (endereco_estado),
ADD INDEX idx_profissao (profissao),
ADD INDEX idx_ultima_interacao (ultima_interacao);

-- Atualizar configurações
INSERT INTO configuracoes (chave, valor) VALUES 
('anexos_dir', 'uploads/anexos/contatos/'),
('allowed_anexos_types', 'pdf,doc,docx,xls,xlsx,jpg,jpeg,png'),
('max_anexo_size', '10485760'); -- 10MB em bytes
