CREATE TABLE contadores (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    telefone VARCHAR(20) NULL,
    data_cadastro DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    ativo TINYINT(1) NOT NULL DEFAULT 1
);

CREATE TABLE empresas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome_fantasia VARCHAR(255) NOT NULL,
    razao_social VARCHAR(255) NOT NULL,
    cnpj VARCHAR(18) NOT NULL UNIQUE,
    id_contador_principal INT NULL,
    data_cadastro DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    ativo TINYINT(1) NOT NULL DEFAULT 1,
    FOREIGN KEY (id_contador_principal) REFERENCES contadores(id) ON DELETE SET NULL
);

CREATE TABLE tipos_documentos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome_tipo VARCHAR(100) NOT NULL UNIQUE
);

CREATE TABLE documentos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_empresa INT NOT NULL,
    id_tipo_documento INT NOT NULL,
    nome_documento VARCHAR(255) NOT NULL,
    data_emissao DATE NOT NULL,
    data_vencimento DATE NOT NULL,
    prazo_aviso_dias INT NOT NULL,
    caminho_arquivo VARCHAR(255) NULL,
    link_documento VARCHAR(500) NULL,
    emitido_por_contador TINYINT(1) NOT NULL DEFAULT 0,
    observacoes TEXT NULL,
    data_upload DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    status_documento ENUM('Válido', 'Próximo do Vencimento', 'Vencido', 'Não Aplicável') NOT NULL,
    FOREIGN KEY (id_empresa) REFERENCES empresas(id) ON DELETE CASCADE,
    FOREIGN KEY (id_tipo_documento) REFERENCES tipos_documentos(id) ON DELETE CASCADE
);

CREATE TABLE documento_destinatarios_notificacao (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_documento INT NOT NULL,
    nome_destinatario VARCHAR(100) NULL,
    email_destinatario VARCHAR(255) NOT NULL,
    telefone_destinatario VARCHAR(20) NULL,
    FOREIGN KEY (id_documento) REFERENCES documentos(id) ON DELETE CASCADE
);

CREATE TABLE usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    senha VARCHAR(255) NOT NULL,
    data_cadastro DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    ativo TINYINT(1) NOT NULL DEFAULT 1,
    perfil ENUM('Administrador', 'Usuário Comum') NOT NULL DEFAULT 'Administrador'
);

CREATE TABLE links_compartilhamento (
    id INT AUTO_INCREMENT PRIMARY KEY,
    uuid VARCHAR(36) NOT NULL UNIQUE,
    id_empresa INT NOT NULL,
    data_criacao DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    data_expiracao DATETIME NULL,
    ativo TINYINT(1) NOT NULL DEFAULT 1,
    FOREIGN KEY (id_empresa) REFERENCES empresas(id) ON DELETE CASCADE
);

CREATE TABLE templates_email (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome_template VARCHAR(100) NOT NULL UNIQUE,
    assunto VARCHAR(255) NOT NULL,
    corpo_html TEXT NOT NULL,
    data_criacao DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    ativo TINYINT(1) NOT NULL DEFAULT 1,
    status_destino VARCHAR(50) NOT NULL DEFAULT 'Válido'
);

CREATE TABLE configuracoes_sistema (
    id INT AUTO_INCREMENT PRIMARY KEY,
    logo_url VARCHAR(255) NULL,
    cor_primaria VARCHAR(7) NULL,
    cor_secundaria VARCHAR(7) NULL,
    smtp_host VARCHAR(255) NULL,
    smtp_port INT NULL,
    smtp_username VARCHAR(255) NULL,
    smtp_password VARCHAR(255) NULL,
    smtp_encryption ENUM('tls', 'ssl', 'none') NULL,
    url_webhook_global VARCHAR(500) NULL,
    webhook_ativo TINYINT(1) NOT NULL DEFAULT 0,
    texto_logo VARCHAR(100) NULL,
    estilo_texto_logo VARCHAR(255) NULL,
    hora_envio_notificacoes VARCHAR(5) NULL,
    webhook_delay_ms INT NULL
);

CREATE TABLE log_envio_notificacoes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_documento INT NOT NULL,
    status_documento VARCHAR(50) NOT NULL,
    data_envio DATETIME NOT NULL,
    destinatario VARCHAR(255) NOT NULL
);

-- Inserir configuração inicial do sistema
INSERT INTO configuracoes_sistema (id) VALUES (1);

-- Inserir tipos de documentos padrão
INSERT INTO tipos_documentos (nome_tipo) VALUES 
('CND Trabalhista TST'),
('CND Conjunta de Tributos Federais PGFN'),
('CND Estadual SEFAZ'),
('CND Municipal PGM'),
('CND Procuradoria Geral do Estado'),
('Certidão de Regularidade do FGTS-CRF'),
('Cartão CNPJ'); 