<?php
// Script para forçar a finalização das viagens da rota 19
require_once 'config/database.php';

header('Content-Type: application/json');

try {
    $pdo = conectarBanco();
    
    echo "=== FORÇAR FINALIZAÇÃO ROTA 19 ===\n\n";
    
    // 1. Verificar viagens não finalizadas da rota 19
    echo "1. VIAGENS NÃO FINALIZADAS DA ROTA 19:\n";
    $stmt = $pdo->prepare("
        SELECT 
            v.id,
            v.cliente,
            v.data_inicio,
            v.data_fim,
            v.km_gps_final,
            rv.ordem_execucao
        FROM viagens v
        INNER JOIN rota_viagens rv ON v.id = rv.viagem_id
        WHERE rv.solicitacao_rota_id = 19 AND v.data_fim IS NULL
        ORDER BY rv.ordem_execucao
    ");
    $stmt->execute();
    $viagensNaoFinalizadas = $stmt->fetchAll();
    
    foreach ($viagensNaoFinalizadas as $viagem) {
        echo "- ID: {$viagem['id']}, Cliente: '{$viagem['cliente']}', Ordem: {$viagem['ordem_execucao']}\n";
    }
    
    if (count($viagensNaoFinalizadas) > 0) {
        echo "\n2. FORÇANDO FINALIZAÇÃO DAS VIAGENS:\n";
        
        // 2. Forçar finalização de todas as viagens
        $dataFim = date('Y-m-d H:i:s'); // Usar data/hora atual
        
        $stmt = $pdo->prepare("
            UPDATE viagens 
            SET 
                data_fim = ?,
                km_final = COALESCE(km_gps_final, 0),
                updated_at = ?
            WHERE id IN (
                SELECT v.id
                FROM viagens v
                INNER JOIN rota_viagens rv ON v.id = rv.viagem_id
                WHERE rv.solicitacao_rota_id = 19 AND v.data_fim IS NULL
            )
        ");
        $stmt->execute([$dataFim, $dataFim]);
        
        $linhasAfetadas = $stmt->rowCount();
        echo "✅ {$linhasAfetadas} viagens foram finalizadas\n";
        echo "✅ Data fim definida como: {$dataFim}\n";
        
        // 3. Atualizar status da rota para concluída
        echo "\n3. ATUALIZANDO STATUS DA ROTA:\n";
        $stmt = $pdo->prepare("
            UPDATE solicitacoes_rotas 
            SET 
                status = 'concluida',
                data_fim_real = ?,
                updated_at = ?
            WHERE id = 19
        ");
        $stmt->execute([$dataFim, $dataFim]);
        
        echo "✅ Rota 19 atualizada para 'concluida'\n";
        echo "✅ Data fim real definida como: {$dataFim}\n";
        
    } else {
        echo "✅ Todas as viagens já estão finalizadas!\n";
    }
    
    // 4. Verificar resultado final
    echo "\n4. RESULTADO FINAL:\n";
    
    // Verificar viagens
    $stmt = $pdo->prepare("
        SELECT 
            v.id,
            v.cliente,
            v.data_inicio,
            v.data_fim,
            v.km_gps_final,
            rv.ordem_execucao
        FROM viagens v
        INNER JOIN rota_viagens rv ON v.id = rv.viagem_id
        WHERE rv.solicitacao_rota_id = 19
        ORDER BY rv.ordem_execucao
    ");
    $stmt->execute();
    $viagens = $stmt->fetchAll();
    
    echo "VIAGENS DA ROTA 19:\n";
    foreach ($viagens as $viagem) {
        $status = $viagem['data_fim'] ? 'concluida' : 'em_andamento';
        echo "- ID: {$viagem['id']}, Cliente: '{$viagem['cliente']}', Status: {$status}, Data fim: '{$viagem['data_fim']}'\n";
    }
    
    // Verificar rota
    $stmt = $pdo->prepare("
        SELECT 
            id,
            titulo,
            status,
            data_inicio_real,
            data_fim_real
        FROM solicitacoes_rotas 
        WHERE id = 19
    ");
    $stmt->execute();
    $rota = $stmt->fetch();
    
    echo "\nROTA 19:\n";
    echo "- ID: {$rota['id']}\n";
    echo "- Título: '{$rota['titulo']}'\n";
    echo "- Status: '{$rota['status']}'\n";
    echo "- Data início: '{$rota['data_inicio_real']}'\n";
    echo "- Data fim: '{$rota['data_fim_real']}'\n";
    
    echo "\n=== FIM DA FINALIZAÇÃO ===\n";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "\n";
}
?>
