CREATE DATABASE IF NOT EXISTS assinatura_digital CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE assinatura_digital;

CREATE TABLE IF NOT EXISTS usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(150) NOT NULL,
  email VARCHAR(150) NOT NULL UNIQUE,
  senha VARCHAR(255) NOT NULL,
  criado_em DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS documentos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  titulo VARCHAR(200) NOT NULL,
  descricao TEXT,
  arquivo_pdf VARCHAR(255) NOT NULL,
  arquivo_pdf_assinado VARCHAR(255),
  codigo_validacao VARCHAR(80) NOT NULL UNIQUE,
  status VARCHAR(50) DEFAULT 'aguardando_assinatura',
  usuario_id INT NOT NULL,
  criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
  INDEX (codigo_validacao),
  INDEX (status)
);

CREATE TABLE IF NOT EXISTS assinaturas (
  id INT AUTO_INCREMENT PRIMARY KEY,
  documento_id INT NOT NULL,
  nome_assinante VARCHAR(150) NOT NULL,
  telefone_assinante VARCHAR(30),
  token VARCHAR(120) NOT NULL UNIQUE,
  assinatura_png VARCHAR(255),
  ip_assinatura VARCHAR(80),
  navegador TEXT,
  status VARCHAR(50) DEFAULT 'pendente',
  pagina_assinatura INT DEFAULT 1,
  pos_x DECIMAL(10,2) DEFAULT 25,
  pos_y DECIMAL(10,2) DEFAULT 230,
  largura_assinatura DECIMAL(10,2) DEFAULT 55,
  assinado_em DATETIME,
  aprovado_por INT,
  aprovado_em DATETIME,
  recusado_por INT,
  recusado_em DATETIME,
  motivo_recusa TEXT,
  criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
  INDEX (token),
  INDEX (status)
);

INSERT INTO usuarios (nome, email, senha)
SELECT 'Administrador', 'admin@admin.com', '$2y$10$C6UzMDM.H6dfI/f/IKcEeO1z4.qL4b.bF4ryCPJX1mMDxwZd8OXI2'
WHERE NOT EXISTS (SELECT 1 FROM usuarios WHERE email = 'admin@admin.com');
