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

// Para requisições OPTIONS (preflight)
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    http_response_code(200);
    exit();
}

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

try {
    $pdo = new PDO($dsn, $username, $password, $options);
    
    $method = $_SERVER['REQUEST_METHOD'];
    
    switch ($method) {
        case 'POST':
            salvarChecklist($pdo);
            break;
            
        case 'GET':
            buscarChecklist($pdo);
            break;
            
        default:
            throw new Exception('Método HTTP não suportado');
    }

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => 'Erro do servidor: ' . $e->getMessage(),
        'timestamp' => date('Y-m-d H:i:s')
    ]);
}

function salvarChecklist($pdo) {
    try {
        // Obter dados JSON do corpo da requisição
        $input = file_get_contents('php://input');
        $dados = json_decode($input, true);
        
        if (!$dados) {
            throw new Exception('Dados JSON inválidos');
        }
        
        // Log para debug
        error_log("CHECKLIST SIMPLES - Dados recebidos: " . json_encode($dados));
        
        // Validar campos obrigatórios
        $camposObrigatorios = ['viagem_id', 'veiculo_id', 'tipo_veiculo', 'data_hora', 'itens'];
        foreach ($camposObrigatorios as $campo) {
            if (!isset($dados[$campo])) {
                throw new Exception("Campo obrigatório ausente: $campo");
            }
        }
        
        // Preparar dados
        $viagem_id = intval($dados['viagem_id']);
        $veiculo_id = intval($dados['veiculo_id']);
        $tipo_veiculo = strtoupper($dados['tipo_veiculo']);
        $data_hora = $dados['data_hora'];
        $itens = json_encode($dados['itens'], JSON_UNESCAPED_UNICODE);
        $observacoes = $dados['observacoes_gerais'] ?? '';
        
        // Verificar se já existe checklist para esta viagem
        $sql_check = "SELECT id FROM checklist_veiculo WHERE viagem_id = ?";
        $stmt_check = $pdo->prepare($sql_check);
        $stmt_check->execute([$viagem_id]);
        $checklist_existente = $stmt_check->fetch();
        
        if ($checklist_existente) {
            // Atualizar checklist existente
            $sql = "UPDATE checklist_veiculo SET 
                    veiculo_id = ?, 
                    tipo_veiculo = ?, 
                    data_hora = ?, 
                    itens = ?, 
                    observacoes_gerais = ?,
                    status = 'aprovado',
                    updated_at = NOW()
                    WHERE viagem_id = ?";
            
            $stmt = $pdo->prepare($sql);
            $result = $stmt->execute([$veiculo_id, $tipo_veiculo, $data_hora, $itens, $observacoes, $viagem_id]);
            
            $checklist_id = $checklist_existente['id'];
            $acao = 'atualizado';
        } else {
            // Inserir novo checklist
            $sql = "INSERT INTO checklist_veiculo 
                    (viagem_id, veiculo_id, tipo_veiculo, data_hora, itens, observacoes_gerais, status) 
                    VALUES (?, ?, ?, ?, ?, ?, 'aprovado')";
            
            $stmt = $pdo->prepare($sql);
            $result = $stmt->execute([$viagem_id, $veiculo_id, $tipo_veiculo, $data_hora, $itens, $observacoes]);
            
            $checklist_id = $pdo->lastInsertId();
            $acao = 'inserido';
        }
        
        if ($result) {
            error_log("CHECKLIST SIMPLES - Sucesso: ID=$checklist_id, Ação=$acao, Viagem=$viagem_id");
            
            echo json_encode([
                'success' => true,
                'message' => "Checklist $acao com sucesso",
                'data' => [
                    'id' => $checklist_id,
                    'viagem_id' => $viagem_id,
                    'veiculo_id' => $veiculo_id,
                    'tipo_veiculo' => $tipo_veiculo,
                    'total_itens' => count($dados['itens']),
                    'acao' => $acao,
                    'timestamp' => date('Y-m-d H:i:s')
                ]
            ]);
        } else {
            throw new Exception('Erro ao salvar checklist no banco');
        }
        
    } catch (Exception $e) {
        error_log("CHECKLIST SIMPLES - Erro: " . $e->getMessage());
        throw new Exception('Erro ao salvar checklist: ' . $e->getMessage());
    }
}

function buscarChecklist($pdo) {
    try {
        $viagem_id = $_GET['viagem_id'] ?? null;
        
        if (!$viagem_id) {
            throw new Exception('ID da viagem não fornecido');
        }
        
        $sql = "SELECT * FROM checklist_veiculo WHERE viagem_id = ?";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$viagem_id]);
        $checklist = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($checklist) {
            // Decodificar itens JSON
            $checklist['itens'] = json_decode($checklist['itens'], true);
            
            echo json_encode([
                'success' => true,
                'message' => 'Checklist encontrado',
                'data' => $checklist
            ]);
        } else {
            echo json_encode([
                'success' => false,
                'message' => 'Checklist não encontrado',
                'data' => null
            ]);
        }
        
    } catch (Exception $e) {
        throw new Exception('Erro ao buscar checklist: ' . $e->getMessage());
    }
}
?>
