-- ============================================
-- CORREÇÃO MANUAL DO ERRO 500
-- Execute este script diretamente no banco de dados
-- ============================================

-- 1. Selecionar banco
USE pinheir3_controle_frotas;

-- 2. Verificar se estamos no banco correto
SELECT DATABASE() as banco_atual;

-- 3. Desabilitar verificação de foreign keys
SET FOREIGN_KEY_CHECKS = 0;

-- 4. Remover tabela problemática
DROP TABLE IF EXISTS solicitacoes_viagem;

-- 5. Criar tabela com estrutura mínima
CREATE TABLE solicitacoes_viagem (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    tecnico_id VARCHAR(50) NOT NULL,
    veiculo_id BIGINT NOT NULL,
    cliente VARCHAR(200) NOT NULL,
    motivo TEXT NOT NULL,
    km_inicial INT NOT NULL,
    latitude_inicial DECIMAL(10, 8) NULL,
    longitude_inicial DECIMAL(11, 8) NULL,
    endereco_inicial TEXT NULL,
    cliente_id BIGINT NULL,
    status VARCHAR(20) DEFAULT 'pendente',
    gestor_id VARCHAR(50) NULL,
    observacoes TEXT NULL,
    prioridade VARCHAR(20) DEFAULT 'normal',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_tecnico_id (tecnico_id),
    INDEX idx_veiculo_id (veiculo_id),
    INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 6. Criar tabela notificações
CREATE TABLE IF NOT EXISTS notificacoes_push (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    user_id VARCHAR(50) NOT NULL,
    tipo VARCHAR(50) NOT NULL,
    titulo VARCHAR(200) NOT NULL,
    mensagem TEXT NOT NULL,
    solicitacao_id BIGINT NULL,
    lida BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_user_id (user_id),
    INDEX idx_tipo (tipo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 7. Adicionar campos na tabela motoristas (se não existirem)
ALTER TABLE motoristas ADD COLUMN IF NOT EXISTS token VARCHAR(255) NULL;
ALTER TABLE motoristas ADD COLUMN IF NOT EXISTS token_validade TIMESTAMP NULL;
ALTER TABLE motoristas ADD COLUMN IF NOT EXISTS tipo VARCHAR(20) DEFAULT 'motorista';

-- 8. Reabilitar verificação de foreign keys
SET FOREIGN_KEY_CHECKS = 1;

-- 9. Testar inserção
INSERT INTO solicitacoes_viagem (
    tecnico_id, veiculo_id, cliente, motivo, km_inicial,
    latitude_inicial, longitude_inicial, endereco_inicial,
    observacoes, prioridade
) VALUES (
    '4', 6, 'Cliente Teste Manual', 'Motivo Teste Manual', 100,
    -10.9265, -37.0722, 'Endereço Teste Manual',
    'Observação teste manual', 'normal'
);

-- 10. Verificar se funcionou
SELECT 'Teste realizado com sucesso!' as status;
SELECT COUNT(*) as total FROM solicitacoes_viagem;

-- 11. Limpar teste
DELETE FROM solicitacoes_viagem WHERE cliente = 'Cliente Teste Manual';

-- 12. Mostrar estrutura final
DESCRIBE solicitacoes_viagem;
DESCRIBE notificacoes_push;

SELECT 'Correção manual concluída!' as status; 