<?php

require 'conexao/conexao.php';

// Criando a conexão com o MySQL usando mysqli
$conn = new mysqli($servername, $username, $password, $dbname);

// Verificando a conexão
if ($conn->connect_error) {
    die("Falha na conexão: " . $conn->connect_error);
}

// Carregar o arquivo XML
$xmlFile = 'tabela_vendedores.xml'; // Certifique-se de que o caminho para o XML está correto

exit();

// Verifica se o arquivo XML existe antes de tentar carregá-lo
if (file_exists($xmlFile)) {
    $xml = simplexml_load_file($xmlFile);

    // Array para armazenar valores acumulados por código de vendedor, ano, mês e grupo_meta
    $dadosAgrupados = [];

    // Percorrendo cada elemento <ROW> do XML
    foreach ($xml->ROW as $row) {
        // Extrair os dados de cada elemento no XML, verificando se não são 'NULL'
        $codigo_filial = $row->codigo_filial != 'NULL' ? (int)$row->codigo_filial : NULL;
        $ano = $row->ano != 'NULL' ? (int)$row->ano : NULL;
        $mes = $row->mes != 'NULL' ? (int)$row->mes : NULL;
        $periodo = $row->periodo != 'NULL' ? (int)$row->periodo : NULL;
        $codigo_vendedor = $row->codigo_funcionario != 'NULL' ? (int)$row->codigo_funcionario : NULL;
        $valor_meta = $row->valor_meta != 'NULL' ? (float)str_replace(',', '.', $row->valor_meta) : 0.00;

        // Ignorar registros com valor_meta igual a 0
        if ($valor_meta == 0.00) {
            continue;
        }

        // Definir o código da meta com base no grupo_meta
        if ($row->grupo_meta == "revenda") {
            $codigo_meta = 1;
        } elseif ($row->grupo_meta == "manipulado") {
            $codigo_meta = 2;
        } elseif ($row->grupo_meta == "propria") {
            $codigo_meta = 3;
        } else {
            continue; // Se o grupo_meta não corresponder a nenhuma categoria, ignorar o registro
        }

        // Chave de agrupamento que considera vendedor, ano, mês e grupo_meta
        $chave = $codigo_vendedor . '-' . $ano . '-' . $mes . '-' . $codigo_meta;

        // Inicializar o acumulador de valor_meta, se necessário
        if (!isset($dadosAgrupados[$chave])) {
            $dadosAgrupados[$chave] = [
                'codigo_filial' => $codigo_filial,
                'ano' => $ano,
                'mes' => $mes,
                'codigo_meta' => $codigo_meta,
                'valor_meta' => 0.00 // Inicializar com 0.00 para garantir precisão na soma
            ];
        }

        // Somar o valor_meta com o valor já existente para o vendedor, ano, mês e grupo_meta
        $dadosAgrupados[$chave]['valor_meta'] += (float)$valor_meta;
    }

    // Agora, vamos inserir um registro para cada chave agrupada
    foreach ($dadosAgrupados as $chave => $dados) {
        $tipo_meta = 2; // Valor padrão para `tipo_meta`
        $valor_meta_2 = 0.00; // Valor padrão para `valor_meta_2`
        $codigo_vendedor = explode('-', $chave)[0]; // Extrair o código do vendedor da chave

        // Construir a consulta SQL para inserção
        $sql = "INSERT INTO define_metas (codigo_filial, codigo_meta, tipo_meta, ano, mes, valor_meta, valor_meta_2, codigo_vendedor) 
                VALUES (?, ?, ?, ?, ?, ?, ?, ?)";

        // Preparar e executar a consulta usando prepared statements
        if ($stmt = $conn->prepare($sql)) {
            // Associar parâmetros à consulta
            $stmt->bind_param('iiiiidds', $dados['codigo_filial'], $dados['codigo_meta'], $tipo_meta, $dados['ano'], $dados['mes'], $dados['valor_meta'], $valor_meta_2, $codigo_vendedor);

            // Executar a inserção e verificar erros
            if ($stmt->execute()) {
                echo "Registro inserido com sucesso! Código Vendedor: $codigo_vendedor, Ano: " . $dados['ano'] . ", Mês: " . $dados['mes'] . ", Meta: " . number_format($dados['valor_meta'], 2, ',', '.') . " para o grupo_meta {$dados['codigo_meta']}<br>";
            } else {
                echo "Erro ao inserir o registro para o vendedor $codigo_vendedor e grupo_meta {$dados['codigo_meta']}: " . $stmt->error . "<br>";
            }

            // Fechar o statement
            $stmt->close();
        } else {
            echo "Erro ao preparar a consulta SQL: " . $conn->error . "<br>";
        }
    }

    echo "Importação concluída!";
} else {
    echo "Erro ao carregar o arquivo XML.";
}

// Fechar a conexão com o banco de dados
$conn->close();