USE bulo;

CREATE TABLE IF NOT EXISTS suporte_chamados (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_usuario INT NOT NULL,
  tipo_usuario ENUM('motorista', 'passageiro') NOT NULL DEFAULT 'motorista',
  id_corrida INT NULL,
  id_veiculo INT NULL,
  categoria ENUM(
    'corrida',
    'conta',
    'documentos',
    'veiculo',
    'ganhos_pagamentos',
    'item_encontrado',
    'seguranca',
    'problema_app',
    'outros'
  ) NOT NULL DEFAULT 'outros',
  subcategoria VARCHAR(80) NULL,
  prioridade ENUM('baixa', 'normal', 'alta', 'urgente') NOT NULL DEFAULT 'normal',
  status ENUM('aberto', 'em_atendimento', 'aguardando_motorista', 'resolvido', 'fechado') NOT NULL DEFAULT 'aberto',
  titulo VARCHAR(140) NOT NULL,
  descricao TEXT NOT NULL,
  admin_responsavel VARCHAR(80) NULL,
  criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  ultima_mensagem_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT fk_suporte_chamados_usuario FOREIGN KEY (id_usuario) REFERENCES usuarios(id),
  CONSTRAINT fk_suporte_chamados_corrida FOREIGN KEY (id_corrida) REFERENCES corridas(id) ON DELETE SET NULL,
  CONSTRAINT fk_suporte_chamados_veiculo FOREIGN KEY (id_veiculo) REFERENCES veiculos(id) ON DELETE SET NULL,
  INDEX idx_suporte_chamados_usuario (id_usuario, tipo_usuario),
  INDEX idx_suporte_chamados_status (status),
  INDEX idx_suporte_chamados_categoria (categoria),
  INDEX idx_suporte_chamados_ultima (ultima_mensagem_em)
);

CREATE TABLE IF NOT EXISTS suporte_mensagens (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_chamado INT NOT NULL,
  remetente_tipo ENUM('motorista', 'passageiro', 'admin', 'sistema') NOT NULL,
  id_remetente INT NULL,
  nome_remetente VARCHAR(120) NULL,
  mensagem TEXT NOT NULL,
  anexo_url VARCHAR(255) NULL,
  lido_motorista TINYINT(1) NOT NULL DEFAULT 0,
  lido_admin TINYINT(1) NOT NULL DEFAULT 0,
  criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT fk_suporte_mensagens_chamado FOREIGN KEY (id_chamado) REFERENCES suporte_chamados(id) ON DELETE CASCADE,
  CONSTRAINT fk_suporte_mensagens_remetente FOREIGN KEY (id_remetente) REFERENCES usuarios(id) ON DELETE SET NULL,
  INDEX idx_suporte_mensagens_chamado (id_chamado, criado_em),
  INDEX idx_suporte_mensagens_lido_admin (lido_admin),
  INDEX idx_suporte_mensagens_lido_motorista (lido_motorista)
);
