<?php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

// Tratar OPTIONS request
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

require_once '../config/database.php';

try {
    $pdo = conectarBanco();
    
    // Obter parâmetros
    $viagemId = $_GET['viagem_id'] ?? null;
    
    if (!$viagemId) {
        echo json_encode([
            'sucesso' => false,
            'erro' => 'ID da viagem não fornecido'
        ]);
        exit;
    }
    
    // PRIMEIRA TENTATIVA: Buscar pelo viagem_id correto
    $sql = "SELECT * FROM checklist_veiculo WHERE viagem_id = ? ORDER BY data_hora DESC LIMIT 1";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$viagemId]);
    $checklist = $stmt->fetch(PDO::FETCH_ASSOC);
    
    $origem = 'viagem_id_correto';
    
    // SEGUNDA TENTATIVA: Se não encontrou, buscar pelo bug (veiculo_id salvo no lugar do viagem_id)
    if (!$checklist) {
        // Primeiro, buscar qual é o veiculo_id da viagem
        $sqlViagem = "SELECT veiculo_id FROM viagens WHERE id = ?";
        $stmtViagem = $pdo->prepare($sqlViagem);
        $stmtViagem->execute([$viagemId]);
        $viagem = $stmtViagem->fetch(PDO::FETCH_ASSOC);
        
        if ($viagem && $viagem['veiculo_id']) {
            // Buscar checklist onde viagem_id = veiculo_id (bug do app Android)
            $sql = "SELECT * FROM checklist_veiculo WHERE viagem_id = ? AND veiculo_id = ? ORDER BY data_hora DESC LIMIT 1";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([$viagem['veiculo_id'], $viagem['veiculo_id']]);
            $checklist = $stmt->fetch(PDO::FETCH_ASSOC);
            $origem = 'correçao_bug_android';
        }
    }
    
    // TERCEIRA TENTATIVA: Buscar por qualquer checklist do veículo na data próxima
    if (!$checklist) {
        $sqlViagem = "SELECT veiculo_id, data_inicio, data_fim FROM viagens WHERE id = ?";
        $stmtViagem = $pdo->prepare($sqlViagem);
        $stmtViagem->execute([$viagemId]);
        $viagem = $stmtViagem->fetch(PDO::FETCH_ASSOC);
        
        if ($viagem && $viagem['veiculo_id']) {
            // Buscar checklist do mesmo veículo em ±1 dia da viagem
            $sql = "SELECT * FROM checklist_veiculo 
                    WHERE veiculo_id = ? 
                    AND DATE(data_hora) BETWEEN DATE(?) - INTERVAL 1 DAY AND DATE(?) + INTERVAL 1 DAY
                    ORDER BY data_hora DESC LIMIT 1";
            $stmt = $pdo->prepare($sql);
            $stmt->execute([$viagem['veiculo_id'], $viagem['data_inicio'], $viagem['data_inicio']]);
            $checklist = $stmt->fetch(PDO::FETCH_ASSOC);
            $origem = 'busca_por_veiculo_e_data';
        }
    }
    
    if ($checklist) {
        // Adicionar informações de debug
        $checklist['_debug'] = [
            'origem_busca' => $origem,
            'viagem_solicitada' => $viagemId,
            'viagem_encontrada' => $checklist['viagem_id'],
            'veiculo_id' => $checklist['veiculo_id'],
            'bug_detectado' => ($checklist['viagem_id'] != $viagemId)
        ];
        
        echo json_encode([
            'sucesso' => true,
            'checklist' => $checklist,
            'debug' => $checklist['_debug']
        ], JSON_UNESCAPED_UNICODE);
    } else {
        // Buscar informações da viagem para debug
        $sqlViagem = "SELECT id, veiculo_id, cliente, data_inicio, data_fim FROM viagens WHERE id = ?";
        $stmtViagem = $pdo->prepare($sqlViagem);
        $stmtViagem->execute([$viagemId]);
        $viagem = $stmtViagem->fetch(PDO::FETCH_ASSOC);
        
        // Buscar checklists disponíveis do mesmo veículo
        $checklistsDisponiveis = [];
        if ($viagem && $viagem['veiculo_id']) {
            $sqlDisponiveis = "SELECT id, viagem_id, data_hora FROM checklist_veiculo WHERE veiculo_id = ? ORDER BY data_hora DESC LIMIT 5";
            $stmtDisponiveis = $pdo->prepare($sqlDisponiveis);
            $stmtDisponiveis->execute([$viagem['veiculo_id']]);
            $checklistsDisponiveis = $stmtDisponiveis->fetchAll(PDO::FETCH_ASSOC);
        }
        
        echo json_encode([
            'sucesso' => false,
            'erro' => 'Checklist não encontrado',
            'debug' => [
                'viagem_solicitada' => $viagemId,
                'viagem_dados' => $viagem,
                'checklists_disponiveis_veiculo' => $checklistsDisponiveis,
                'tentativas_realizadas' => [
                    'viagem_id_correto',
                    'correçao_bug_android',
                    'busca_por_veiculo_e_data'
                ]
            ]
        ], JSON_UNESCAPED_UNICODE);
    }
    
} catch (Exception $e) {
    echo json_encode([
        'sucesso' => false,
        'erro' => 'Erro interno: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}
?> 
