CREATE TABLE IF NOT EXISTS empresas_clientes (
 id INT AUTO_INCREMENT PRIMARY KEY,
 nome VARCHAR(180) NOT NULL,
 cnpj_cpf VARCHAR(40),
 status VARCHAR(40) DEFAULT 'Ativo',
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS usuarios (
 id INT AUTO_INCREMENT PRIMARY KEY,
 nome VARCHAR(120),
 email VARCHAR(160) UNIQUE,
 senha_hash VARCHAR(255),
 perfil VARCHAR(60) DEFAULT 'Admin',
 empresa_cliente_id INT NULL,
 is_master TINYINT DEFAULT 1,
 ativo TINYINT DEFAULT 1,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 INDEX idx_usuario_perfil(perfil),
 INDEX idx_usuario_empresa(empresa_cliente_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS permissoes (
 id INT AUTO_INCREMENT PRIMARY KEY,
 perfil VARCHAR(60) NOT NULL,
 modulo VARCHAR(80) NOT NULL,
 visualizar TINYINT DEFAULT 0,
 criar TINYINT DEFAULT 0,
 editar TINYINT DEFAULT 0,
 excluir TINYINT DEFAULT 0,
 exportar TINYINT DEFAULT 0,
 UNIQUE KEY unq_perm(perfil,modulo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS empresas (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_cliente_id INT NULL,
 razao_social VARCHAR(255) NOT NULL,
 nome_fantasia VARCHAR(255),
 cnpj_cpf VARCHAR(40),
 cnpj_cpf_num VARCHAR(20),
 cep VARCHAR(15),
 endereco VARCHAR(255),
 numero VARCHAR(30),
 complemento VARCHAR(120),
 bairro VARCHAR(120),
 cidade VARCHAR(120),
 uf CHAR(2),
 telefone VARCHAR(80),
 email VARCHAR(180),
 email_mailing VARCHAR(180),
 email_api VARCHAR(180),
 email_comparativo VARCHAR(20) DEFAULT 'Pendente',
 site VARCHAR(180),
 responsavel VARCHAR(160),
 responsavel_tecnico_id INT NULL,
 rt_vinculo VARCHAR(20) DEFAULT NULL,
 rt_status VARCHAR(40) DEFAULT 'Sem RT',
 cliente TINYINT DEFAULT 0,
 participa_evento TINYINT DEFAULT 0,
 origem VARCHAR(120),
 evento VARCHAR(180),
 etapa_crm ENUM('Prospecção','Contato realizado','Proposta enviada','Negociação','Fechado','Perdido') DEFAULT 'Prospecção',
 tags TEXT,
 status ENUM('Ativo','Inativo','Prospecção','Orçamento','Contato realizado','Proposta enviada','Negociação','Fechado','Perdido') DEFAULT 'Prospecção',
 latitude DECIMAL(10,7),
 longitude DECIMAL(10,7),
 observacoes TEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 INDEX idx_doc(cnpj_cpf_num),
 INDEX idx_geo(uf,cidade),
 INDEX idx_status(status),
 INDEX idx_rt_empresa(responsavel_tecnico_id),
 INDEX idx_empresa_cliente(empresa_cliente_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS contatos (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 nome VARCHAR(160),
 cargo VARCHAR(120),
 cpf VARCHAR(30),
 cpf_num VARCHAR(20),
 telefone VARCHAR(80),
 whatsapp VARCHAR(80),
 email VARCHAR(180),
 departamento VARCHAR(120),
 observacoes TEXT,
 status VARCHAR(40) DEFAULT 'Ativo',
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY(empresa_id) REFERENCES empresas(id) ON DELETE CASCADE,
 INDEX idx_contato_cpf(cpf_num)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS servicos_prestados (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 tipo_servico ENUM('Responsável Técnico','SCM','SEAC','STFC','Pós Outorga','LTE','SST','Treinamento') NOT NULL,
 status VARCHAR(60) DEFAULT 'Ativo',
 data_inicio DATE NULL,
 data_fim DATE NULL,
 responsavel_interno VARCHAR(160),
 observacoes TEXT,
 valor DECIMAL(12,2),
 contrato VARCHAR(255),
 anexo VARCHAR(255),
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY(empresa_id) REFERENCES empresas(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS responsaveis_tecnicos (
 id INT AUTO_INCREMENT PRIMARY KEY,
 nome VARCHAR(180) NOT NULL,
 cpf VARCHAR(30),
 cpf_num VARCHAR(20),
 crea_cft VARCHAR(80),
 classificacao VARCHAR(20) DEFAULT 'CREA',
 telefone VARCHAR(80),
 email VARCHAR(180),
 uf_base VARCHAR(20),
 vagas INT DEFAULT 0,
 status VARCHAR(40) DEFAULT 'Ativo',
 observacoes TEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 INDEX idx_rt_cpf(cpf_num),
 INDEX idx_rt_uf(uf_base)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS quadros_horarios (
 id INT AUTO_INCREMENT PRIMARY KEY,
 responsavel_id INT NOT NULL,
 empresa_id INT NULL,
 uf CHAR(2),
 cidade VARCHAR(120),
 classificacao VARCHAR(20) DEFAULT 'CREA',
 dia_semana VARCHAR(20),
 hora_inicio TIME NULL,
 hora_fim TIME NULL,
 carga_horaria VARCHAR(40),
 status VARCHAR(40) DEFAULT 'Disponível',
 observacoes TEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY(responsavel_id) REFERENCES responsaveis_tecnicos(id) ON DELETE CASCADE,
 FOREIGN KEY(empresa_id) REFERENCES empresas(id) ON DELETE SET NULL,
 INDEX idx_qh_geo(uf,cidade)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS crm_atividades (
 id INT AUTO_INCREMENT PRIMARY KEY,
 empresa_id INT NOT NULL,
 usuario_id INT NULL,
 tipo VARCHAR(80),
 titulo VARCHAR(180),
 descricao TEXT,
 data_prevista DATETIME NULL,
 status VARCHAR(40) DEFAULT 'Aberta',
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY(empresa_id) REFERENCES empresas(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS importacoes_log (
 id INT AUTO_INCREMENT PRIMARY KEY,
 arquivo VARCHAR(255),
 tipo VARCHAR(50),
 total_lidos INT DEFAULT 0,
 total_criados INT DEFAULT 0,
 total_atualizados INT DEFAULT 0,
 total_ignorados INT DEFAULT 0,
 log_detalhado LONGTEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO empresas_clientes(id,nome,cnpj_cpf,status) VALUES (1,'DJR Consultoria','', 'Ativo') ON DUPLICATE KEY UPDATE nome=VALUES(nome);

INSERT INTO permissoes(perfil,modulo,visualizar,criar,editar,excluir,exportar) VALUES
('Comercial','dashboard',1,0,0,0,0),('Comercial','crm',1,1,1,0,1),('Comercial','prospeccao',1,1,1,0,1),('Comercial','clientes',1,0,1,0,1),('Comercial','relatorios',1,0,0,0,1),
('Operacional','dashboard',1,0,0,0,0),('Operacional','clientes',1,0,1,0,1),('Operacional','servicos',1,1,1,0,1),('Operacional','responsavel',1,1,1,0,1),('Operacional','relatorios',1,0,0,0,1),
('Consulta','dashboard',1,0,0,0,0),('Consulta','clientes',1,0,0,0,0),('Consulta','relatorios',1,0,0,0,0)
ON DUPLICATE KEY UPDATE visualizar=VALUES(visualizar),criar=VALUES(criar),editar=VALUES(editar),excluir=VALUES(excluir),exportar=VALUES(exportar);

INSERT INTO empresas(empresa_cliente_id,razao_social,nome_fantasia,cnpj_cpf,cnpj_cpf_num,cidade,uf,cliente,participa_evento,origem,evento,etapa_crm,tags,status,latitude,longitude) VALUES
(1,'DJR Consultoria - Exemplo Cliente','DJR Exemplo','00.000.000/0001-00','00000000000000','Rio Branco','AC',1,0,'Cadastro manual','','Fechado','SCM, Responsável Técnico','Ativo',-9.97499,-67.82430),
(1,'Lead Expo ISP Acre 2026','Lead Evento','','','Cruzeiro do Sul','AC',0,1,'Evento','Expo ISP Acre 2026','Prospecção','Evento Acre 2026, IPTV, Telefonia','Prospecção',-7.62762,-72.67557);

INSERT INTO responsaveis_tecnicos(nome,cpf,cpf_num,crea_cft,classificacao,telefone,email,uf_base,vagas,status) VALUES ('DEUSOMIR OLIVEIRA DA SILVA JUNIOR','','','CREA','CREA','','deusomir@djrconsultoria.com','AC',4,'Ativo');

ALTER TABLE responsaveis_tecnicos MODIFY COLUMN uf_base VARCHAR(20) NULL;

-- Atualizações v1.1.0 - Dashboard inteligente e status operacional
ALTER TABLE quadros_horarios MODIFY COLUMN status VARCHAR(40) DEFAULT 'Disponível';
ALTER TABLE quadros_horarios MODIFY COLUMN cidade VARCHAR(120) NULL;
ALTER TABLE quadros_horarios MODIFY COLUMN uf CHAR(2) NULL;

