

-- Tabela de informes de rendimento
CREATE TABLE IF NOT EXISTS informes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    servidor_id INT NOT NULL,
    ano_exercicio INT NOT NULL,
    ano_base INT NOT NULL,
    protocolo VARCHAR(50) NOT NULL UNIQUE,
    data_emissao DATE NOT NULL,
    arquivo_pdf VARCHAR(255) NOT NULL,
    total_rendimentos DECIMAL(15,2),
    total_deducoes DECIMAL(15,2),
    base_calculo DECIMAL(15,2),
    visualizado TINYINT(1) DEFAULT 0,
    data_visualizacao TIMESTAMP NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (servidor_id) REFERENCES servidores(id) ON DELETE CASCADE,
    INDEX idx_servidor (servidor_id),
    INDEX idx_ano_exercicio (ano_exercicio),
    INDEX idx_protocolo (protocolo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabela de configurações do sistema
CREATE TABLE IF NOT EXISTS configuracoes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    chave VARCHAR(100) NOT NULL UNIQUE,
    valor TEXT,
    tipo ENUM('text', 'number', 'boolean', 'json', 'file') DEFAULT 'text',
    descricao TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_chave (chave)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabela de logs de acesso
CREATE TABLE IF NOT EXISTS logs_acesso (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tipo_usuario ENUM('admin', 'servidor') NOT NULL,
    usuario_id INT NOT NULL,
    acao VARCHAR(100) NOT NULL,
    descricao TEXT,
    ip_address VARCHAR(45),
    user_agent TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_tipo_usuario (tipo_usuario),
    INDEX idx_usuario_id (usuario_id),
    INDEX idx_acao (acao),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Inserir configurações padrão
INSERT INTO configuracoes (chave, valor, tipo, descricao) VALUES
('sistema_nome', 'Portal IRPF', 'text', 'Nome do sistema'),
('orgao_nome', 'Prefeitura Municipal', 'text', 'Nome do órgão'),
('orgao_cnpj', '', 'text', 'CNPJ do órgão'),
('orgao_endereco', '', 'text', 'Endereço do órgão'),
('orgao_telefone', '', 'text', 'Telefone do órgão'),
('orgao_email', '', 'text', 'E-mail do órgão'),
('logo_sistema', '', 'file', 'Logo do sistema'),
('cor_primaria', '#4682B4', 'text', 'Cor primária do tema'),
('cor_secundaria', '#0f2035', 'text', 'Cor secundária do tema'),
('cor_destaque', '#b8860b', 'text', 'Cor de destaque'),
('senha_padrao_servidor', '4_ultimos_cpf', 'text', 'Padrão de senha para servidores (4_ultimos_cpf ou custom)'),
('permitir_download', '1', 'boolean', 'Permitir download de PDFs'),
('permitir_impressao', '1', 'boolean', 'Permitir impressão de PDFs'),
('lgpd_texto', 'Conexão SSL/TLS 256-bit · Ambiente seguro · Acessos registrados em conformidade com a LGPD', 'text', 'Texto de conformidade LGPD')
ON DUPLICATE KEY UPDATE valor=VALUES(valor);
