
-- Patrimônio Câmara (MySQL 8+)
CREATE TABLE IF NOT EXISTS usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  login VARCHAR(60) NOT NULL UNIQUE,
  senha_hash VARCHAR(255) NOT NULL,
  perfil ENUM('admin','operador') NOT NULL DEFAULT 'operador',
  ativo TINYINT NOT NULL DEFAULT 1,
  criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS pat_setores (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  localizacao VARCHAR(120) NULL,
  ativo TINYINT NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS pat_categorias (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  ativo TINYINT NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS pat_responsaveis (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  cargo VARCHAR(120) NULL,
  documento VARCHAR(30) NULL,
  telefone VARCHAR(30) NULL,
  ativo TINYINT NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS pat_bens (
  id INT AUTO_INCREMENT PRIMARY KEY,
  numero_patrimonio VARCHAR(30) NOT NULL UNIQUE,
  descricao VARCHAR(255) NOT NULL,
  categoria_id INT NULL,
  marca VARCHAR(80) NULL,
  modelo VARCHAR(80) NULL,
  num_serie VARCHAR(80) NULL,
  valor DECIMAL(12,2) NULL,
  data_aquisicao DATE NULL,
  documento_aquisicao VARCHAR(120) NULL,
  setor_id_atual INT NULL,
  responsavel_id_atual INT NULL,
  situacao ENUM('ativo','baixado','extraviado','doado','manutencao') NOT NULL DEFAULT 'ativo',
  observacoes TEXT NULL,
  foto VARCHAR(255) NULL,
  criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  atualizado_em TIMESTAMP NULL DEFAULT NULL,
  INDEX idx_setor (setor_id_atual),
  INDEX idx_categoria (categoria_id),
  CONSTRAINT fk_bens_setor FOREIGN KEY (setor_id_atual) REFERENCES pat_setores(id) ON UPDATE CASCADE ON DELETE SET NULL,
  CONSTRAINT fk_bens_cat FOREIGN KEY (categoria_id) REFERENCES pat_categorias(id) ON UPDATE CASCADE ON DELETE SET NULL,
  CONSTRAINT fk_bens_resp FOREIGN KEY (responsavel_id_atual) REFERENCES pat_responsaveis(id) ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS pat_movimentacoes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  bem_id INT NOT NULL,
  tipo ENUM('entrada','transferencia','responsavel','manutencao','retorno_manutencao','baixa') NOT NULL,
  setor_origem_id INT NULL,
  setor_destino_id INT NULL,
  responsavel_origem_id INT NULL,
  responsavel_destino_id INT NULL,
  documento VARCHAR(120) NULL,
  motivo VARCHAR(255) NULL,
  usuario_id INT NULL,
  criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  INDEX idx_bem (bem_id),
  CONSTRAINT fk_mov_bem FOREIGN KEY (bem_id) REFERENCES pat_bens(id) ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT fk_mov_user FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Inventário (simples)
CREATE TABLE IF NOT EXISTS pat_inventarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  setor_id INT NULL,
  status ENUM('aberto','fechado') NOT NULL DEFAULT 'aberto',
  criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  fechado_em TIMESTAMP NULL,
  CONSTRAINT fk_inv_setor FOREIGN KEY (setor_id) REFERENCES pat_setores(id) ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS pat_inventario_itens (
  id INT AUTO_INCREMENT PRIMARY KEY,
  inventario_id INT NOT NULL,
  bem_id INT NOT NULL,
  conferido TINYINT NOT NULL DEFAULT 0,
  observacao VARCHAR(255) NULL,
  conferido_em TIMESTAMP NULL,
  usuario_id INT NULL,
  UNIQUE KEY uniq_inv_bem (inventario_id, bem_id),
  CONSTRAINT fk_invi_inv FOREIGN KEY (inventario_id) REFERENCES pat_inventarios(id) ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT fk_invi_bem FOREIGN KEY (bem_id) REFERENCES pat_bens(id) ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT fk_invi_user FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON UPDATE CASCADE ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
