-- ExtremaDesk - SQL principal completo e atualizado
-- Gerado a partir do schema atual + migrations em database/migrations
-- Importar no phpMyAdmin com o banco de dados desejado ja selecionado.
-- Nao usa USE nem DROP TABLE para evitar problemas em hospedagens e preservar dados existentes.



CREATE TABLE IF NOT EXISTS `chamados` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(255) NOT NULL,
  `email` varchar(150) DEFAULT NULL,
  `nome` varchar(150) DEFAULT NULL,
  `telefone` varchar(50) DEFAULT NULL,
  `secretaria` varchar(150) DEFAULT NULL,
  `setor` varchar(150) DEFAULT NULL,
  `topico` varchar(100) DEFAULT NULL,
  `dados` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`dados`)),
  `anexo` varchar(255) DEFAULT NULL,
  `descricao` text NOT NULL,
  `prioridade` enum('Baixa','Média','Alta') DEFAULT 'Baixa',
  `status` enum('Aberto','Aguardando TI','Em andamento','Aguardando usuario','Resolvido','Cancelado','Reaberto') DEFAULT 'Aberto',
  `usuario_id` int(11) DEFAULT NULL,
  `tecnico_id` int(11) DEFAULT NULL,
  `auto_atribuido` tinyint(1) NOT NULL DEFAULT 0,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `deleted_at` timestamp NULL DEFAULT NULL,
  `deleted_by` int(11) DEFAULT NULL,
  `tempo_resolucao` datetime DEFAULT NULL,
  `categoria` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `usuario_id` (`usuario_id`),
  KEY `tecnico_id` (`tecnico_id`),
  KEY `idx_chamados_status` (`status`),
  KEY `idx_chamados_tecnico_status` (`tecnico_id`,`status`),
  KEY `idx_chamados_usuario` (`usuario_id`),
  KEY `idx_chamados_updated` (`updated_at`),
  CONSTRAINT `chamados_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`),
  CONSTRAINT `chamados_ibfk_2` FOREIGN KEY (`tecnico_id`) REFERENCES `usuarios` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `mensagens_chamado` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `chamado_id` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `mensagem` text DEFAULT NULL,
  `anexo` varchar(255) DEFAULT NULL,
  `anexo_nome` varchar(255) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `chamados_historico` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `chamado_id` int(11) NOT NULL,
  `usuario_id` int(11) DEFAULT NULL,
  `acao` varchar(100) NOT NULL,
  `descricao` text DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `chamado_id` (`chamado_id`),
  KEY `usuario_id` (`usuario_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `chamados_anexos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `chamado_id` int(11) NOT NULL,
  `mensagem_id` int(11) DEFAULT NULL,
  `usuario_id` int(11) DEFAULT NULL,
  `arquivo` varchar(255) NOT NULL,
  `nome_original` varchar(255) NOT NULL,
  `mime` varchar(120) DEFAULT NULL,
  `tamanho` int(11) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_chamados_anexos_chamado` (`chamado_id`),
  KEY `idx_chamados_anexos_mensagem` (`mensagem_id`),
  KEY `idx_chamados_anexos_usuario` (`usuario_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `auditoria` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usuario_id` int(11) DEFAULT NULL,
  `acao` varchar(120) NOT NULL,
  `entidade` varchar(80) DEFAULT NULL,
  `entidade_id` int(11) DEFAULT NULL,
  `descricao` text DEFAULT NULL,
  `ip` varchar(45) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_auditoria_usuario` (`usuario_id`),
  KEY `idx_auditoria_entidade` (`entidade`,`entidade_id`),
  KEY `idx_auditoria_created` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `configuracoes` (
  `chave` varchar(100) NOT NULL,
  `valor` longtext DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`chave`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

INSERT IGNORE INTO `configuracoes` (`chave`, `valor`) VALUES
('secretarias', 'SECRETARIA DE SAUDE
SECRETARIA DE EDUCACAO
SECRETARIA DE CULTURA
SECRETARIA DE DESENVOLVIMENTO ECONOMICO
SECRETARIA DE ESPORTES
SECRETARIA DE MEIO AMBIENTE
SECRETARIA DE PLANEJAMENTO & FINANCAS
CONTABILIDADE
CONTROLADORIA
PROCURADORIA
SECRETARIA DE TURISMO
SECRETARIA DE ASSISTENCIA SOCIAL
SECRETARIA DE OBRAS & URBANISMO
RECURSOS HUMANOS
GOVERNO'),
('topicos', 'vector|VECTOR
email|E-MAIL
hardware|HARDWARE
imp_comum|IMPRESSORA
sistemas|SISTEMAS
wifi|WI-FI
rede|REDE DE INTERNET
material|MATERIAL
telefonia|TELEFONIA');

