<?php
header('Content-Type: application/json; charset=utf-8');

$host = 'localhost';
$dbname = 'controle_frota';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Verificar se foi confirmado
    $input = json_decode(file_get_contents('php://input'), true);
    if (!$input || !isset($input['confirmar']) || $input['confirmar'] !== true) {
        echo json_encode([
            'sucesso' => false,
            'mensagem' => 'Confirmação necessária'
        ]);
        exit;
    }
    
    // 1. Identificar duplicatas
    $sql = "
        SELECT 
            tecnico_id, veiculo_id, cliente, DATE(data_inicio) as data_dia, km_inicial,
            COUNT(*) as total,
            GROUP_CONCAT(id ORDER BY id) as ids
        FROM viagens 
        GROUP BY tecnico_id, veiculo_id, cliente, DATE(data_inicio), km_inicial
        HAVING COUNT(*) > 1
        ORDER BY total DESC
    ";
    
    $stmt = $pdo->query($sql);
    $duplicatas = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if (empty($duplicatas)) {
        echo json_encode([
            'sucesso' => true,
            'dados' => [
                'removidas' => 0,
                'grupos_processados' => 0,
                'mensagem' => 'Nenhuma duplicata encontrada'
            ]
        ]);
        exit;
    }
    
    $removidas = 0;
    $gruposProcessados = 0;
    
    $pdo->beginTransaction();
    
    try {
        foreach ($duplicatas as $grupo) {
            $ids = explode(',', $grupo['ids']);
            
            // Buscar detalhes para decidir qual manter
            $stmt = $pdo->prepare("
                SELECT id, data_fim, km_final, sincronizado
                FROM viagens 
                WHERE id IN (" . implode(',', array_fill(0, count($ids), '?')) . ")
                ORDER BY 
                    CASE WHEN data_fim IS NOT NULL THEN 1 ELSE 2 END,  -- Finalizadas primeiro
                    CASE WHEN km_final IS NOT NULL THEN 1 ELSE 2 END,  -- Com KM final
                    sincronizado DESC,                                  -- Sincronizadas
                    id DESC                                            -- Mais recente
            ");
            $stmt->execute($ids);
            $viagensOrdenadas = $stmt->fetchAll(PDO::FETCH_ASSOC);
            
            // Manter a primeira (melhor) e remover as demais
            $manter = $viagensOrdenadas[0]['id'];
            $remover = array_slice($viagensOrdenadas, 1);
            
            foreach ($remover as $viagem) {
                $stmt = $pdo->prepare("DELETE FROM viagens WHERE id = ?");
                $stmt->execute([$viagem['id']]);
                $removidas++;
            }
            
            $gruposProcessados++;
        }
        
        $pdo->commit();
        
        echo json_encode([
            'sucesso' => true,
            'dados' => [
                'removidas' => $removidas,
                'grupos_processados' => $gruposProcessados,
                'mensagem' => "Limpeza concluída com sucesso! $removidas viagens removidas em $gruposProcessados grupos."
            ]
        ]);
        
    } catch (Exception $e) {
        $pdo->rollback();
        throw $e;
    }
    
} catch (Exception $e) {
    echo json_encode([
        'sucesso' => false,
        'mensagem' => 'Erro na limpeza: ' . $e->getMessage()
    ]);
}
?> 
