<?php

// 1. Carrega o arquivo KML
$kmlFile = 'projeto_rede.kml';
$xml = simplexml_load_file($kmlFile);

// 2. O KML trabalha com Namespaces, precisamos registrar para conseguir ler as tags corretamente
$namespaces = $xml->getDocNamespaces();
$xml->registerXPathNamespace('kml', 'http://www.opengis.net/kml/2.2');

// 3. Busca por todos os Placemarks dentro do arquivo usando XPath
$placemarks = $xml->xpath('//kml:Placemark');

$elementosParaMapa = [];

foreach ($placemarks as $placemark) {
    $id = (string)$placemark['id'];
    $name = (string)$placemark->name;
    $description = (string)$placemark->description;
    $styleUrl = str_replace('#', '', (string)$placemark->styleUrl); // Remove a hashtag do ID do estilo
    
    $tipo = 'Desconhecido';
    $coordenadas = [];

    // Verifica se é um Ponto (Marcador de Caixa, CEP, Poste)
    if (isset($placemark->Point)) {
        $tipo = 'Ponto';
        // Limpa espaços em branco e quebras de linha das coordenadas
        $coordString = trim((string)$placemark->Point->coordinates);
        if (!empty($coordString)) {
            $parts = explode(',', $coordString);
            $coordenadas = [
                'lng' => (float)$parts[0],
                'lat' => (float)$parts[1]
            ];
        }
    } 
    // Verifica se é uma Linha (Cabo de Fibra)
    elseif (isset($placemark->LineString)) {
        $tipo = 'Linha';
        $coordString = trim((string)$placemark->LineString->coordinates);
        // Transforma a lista de coordenadas de texto em uma array de pontos
        $linhas = preg_split('/\s+/', $coordString);
        foreach ($linhas as $linha) {
            if (empty($linha)) continue;
            $parts = explode(',', $linha);
            if (count($parts) >= 2) {
                $coordenadas[] = [
                    'lng' => (float)$parts[0],
                    'lat' => (float)$parts[1]
                ];
            }
        }
    }

    // Regra de Negócio Prática para criar categorias de filtro automáticas baseadas no nome
    $categoria = 'Outros';
    if (stripos($name, 'CX') !== false) {
        $categoria = 'Caixa de Atendimento (CTO)';
    } elseif (stripos($name, 'FO') !== false) {
        $categoria = 'Cabo de Fibra';
    } elseif (stripos($name, 'CEP') !== false || stripos($name, 'CE0') !== false) {
        $categoria = 'Ponto de Distribuição';
    }

    // Monta o objeto formatado para o seu mapa
    $elementosParaMapa[] = [
        'id'          => $id,
        'nome'        => $name,
        'descricao'   => $description,
        'estilo_kml'  => $styleUrl,
        'tipo_geom'   => $tipo,
        'categoria'   => $categoria,
        'coordenadas' => $coordenadas
    ];
}

// 4. Agora você tem uma lista estruturada!
// Pode salvar no banco de dados ou retornar diretamente como JSON para o JavaScript do mapa:
header('Content-Type: application/json');
echo json_encode($elementosParaMapa, JSON_PRETTY_PRINT);

