<?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_antiga.xml'; // Certifique-se de que o caminho para o XML está correto

//IF ABAIXO PARA LANÇAR APENAS REGISTROS ONDE NÃO EXISTIR PERIODO 1 E PERIODO 2 PARA UTILIZAR BASTA TIRAR O EXIT, COLOCAR O ARQUIVO PARA IMPORTAÇÃO ACIMA E ATUALIZAR A PAGINA

//exit();

// if (file_exists($xmlFile)) {
//     $xml = simplexml_load_file($xmlFile);

//     // Percorrendo cada elemento <ROW> do XML
//     foreach ($xml->ROW as $row) {
//         // Extrair os dados de cada elemento no XML
//         $codigo_filial = $row->codigo_filial != 'NULL' ? $row->codigo_filial : NULL;
//         $ano = $row->ano != 'NULL' ? $row->ano : NULL;
//         $mes = $row->mes != 'NULL' ? $row->mes : NULL;
//         $periodo = $row->periodo != 'NULL' ? $row->periodo : NULL; // Capturando o valor do período

//         // Verificar se o período é NULL antes de prosseguir
//         if ($periodo === NULL) {
//             // Verificar e inserir valores para cada tipo de meta separadamente
//             $metas = [
//                 ['valor' => $row->valor_revenda, 'codigo_meta' => 1],    // Valor Revenda
//                 ['valor' => $row->valor_manipulado, 'codigo_meta' => 2], // Valor Manipulado
//                 ['valor' => $row->valor_marcapropria, 'codigo_meta' => 3] // Valor Marca Própria
//             ];

//             foreach ($metas as $meta) {
//                 // Se o valor existir, então insere no banco
//                 if (isset($meta['valor']) && $meta['valor'] != 'NULL') {
//                     $valor_meta = $meta['valor'];
//                     $tipo_meta = 3;
//                     $valor_meta_2 = 0;
//                     $codigo_vendedor = 0;
//                     $codigo_meta = $meta['codigo_meta'];

//                     // 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)) {
//                         $stmt->bind_param('iiiiidds', $codigo_filial, $codigo_meta, $tipo_meta, $ano, $mes, $valor_meta, $valor_meta_2, $codigo_vendedor);

//                         // Executar a inserção e verificar erros
//                         if ($stmt->execute()) {
//                             echo "Registro inserido com sucesso!<br>";
//                         } else {
//                             echo "Erro ao inserir o registro: " . $stmt->error . "<br>";
//                         }

//                         // Fechar o statement
//                         $stmt->close();
//                     } else {
//                         echo "Erro ao preparar a consulta SQL: " . $conn->error . "<br>";
//                     }
//                 }
//             }
//         } else {
//             echo "Período não é NULL, registro ignorado.<br>";
//         }
//     }

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



//IF ABAIXO PARA LANÇAR APENAS REGISTROS ONDE EXISTIR PERIODO 1 E PERIODO 2 PARA UTILIZAR BASTA COMENTAR O DE CIMA

if (file_exists($xmlFile)) {
    $xml = simplexml_load_file($xmlFile);

    // Inicializando um array para armazenar os totais agrupados por ano, mês e código meta
    $metasTotais = [];

    // Percorrendo cada elemento <ROW> do XML
    foreach ($xml->ROW as $row) {
        $codigo_filial = $row->codigo_filial != 'NULL' ? $row->codigo_filial : NULL;
        $ano = $row->ano != 'NULL' ? $row->ano : NULL;
        $mes = $row->mes != 'NULL' ? $row->mes : NULL;

        // Valores das metas
        $metas = [
            ['valor' => $row->valor_revenda, 'codigo_meta' => 1],
            ['valor' => $row->valor_manipulado, 'codigo_meta' => 2],
            ['valor' => $row->valor_marcapropria, 'codigo_meta' => 3]
        ];

        foreach ($metas as $meta) {
            // Se o valor existir e não for 'NULL'
            if (isset($meta['valor']) && $meta['valor'] != 'NULL') {
                // Inicializando uma variável para identificar o período
                $periodo = null;
                $valor_meta = $meta['valor'];

                // Definindo o período baseado na lógica
                if ($row->periodo == '1') {
                    $periodo = 1; // Primeiro período
                } elseif ($row->periodo == '2') {
                    $periodo = 2; // Segundo período
                }

                // Verificando se já existe uma entrada para o ano, mês e código_meta
                $key = "{$ano}-{$mes}-{$meta['codigo_meta']}";
                if (!isset($metasTotais[$key])) {
                    $metasTotais[$key] = [
                        'codigo_filial' => $codigo_filial,
                        'ano' => $ano,
                        'mes' => $mes,
                        'codigo_meta' => $meta['codigo_meta'],
                        'tipo_meta' => 3,
                        'valor_total' => 0, // Valor inicial
                        'valor_meta_2' => 0, // Valor inicial
                        'codigo_vendedor' => 0 // Valor inicial
                    ];
                }

                // Somando os valores conforme o período
                if ($periodo) {
                    $metasTotais[$key]['valor_total'] += $valor_meta;
                }
            }
        }
    }

    // Inserindo os dados agrupados na tabela define_metas
    foreach ($metasTotais as $metaTotal) {
        // Verificar se valor_total é maior que zero antes de inserir
        if ($metaTotal['valor_total'] > 0) {
            // 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)) {
                // Ajuste na chamada de bind_param: removendo o código vendedor e ajustando a string de tipo
                $stmt->bind_param('iiisiddi', $metaTotal['codigo_filial'], $metaTotal['codigo_meta'], $metaTotal['tipo_meta'], $metaTotal['ano'], $metaTotal['mes'], $metaTotal['valor_total'], $metaTotal['valor_meta_2'], $metaTotal['codigo_vendedor']);

                // Executar a inserção e verificar erros
                if ($stmt->execute()) {
                    echo "Registro inserido com sucesso para o ano {$metaTotal['ano']} e mês {$metaTotal['mes']}!<br>";
                } else {
                    echo "Erro ao inserir o registro: " . $stmt->error . "<br>";
                }

                // Fechar o statement
                $stmt->close();
            } else {
                echo "Erro ao preparar a consulta SQL: " . $conn->error . "<br>";
            }
        } else {
            echo "Registro não inserido para o ano {$metaTotal['ano']} e mês {$metaTotal['mes']} porque o valor total é zero ou negativo.<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();
