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 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 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 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'); 