<?php
require '../../conexao/conexao.php';
require '../../configuacoes.php';
require './consulta_bd.php';

$consulta_painel_metas = new CunsultasPainelMetas();

// Indica se houve inserção de novas metas (usado no redirect final)
$insert = false;

$metas = $_POST['metas'] ?? null;
$tipo_meta = $_POST['tipo_meta'] ?? null;
$ano = $_POST['ano'] ?? null;
$url = $_POST['url'] ?? null;
$periodo = $_POST['periodo'] ?? null;
$semana = $_POST['semana'] ?? null;
if (empty($semana) ||  $semana === 0) {
    $semana = null;
}

//die('<pre>' . print_r($_POST, true) . '</pre>');


if (!empty($tipo_meta) && $tipo_meta == '2') {
    $dados_atualizacoes = []; // Array para coletar dados das atualizações

    // DEBUG: Log de quantas vezes o loop executa
    $debug_loop = [];

    foreach ($metas as $id_meta => $filiais) {
        $debug_loop[] = "ID_META: {$id_meta}";

        if ($id_meta == 0) {
            // CRIAÇÃO: Usa função consolidada que já faz tudo (insere + log)
            $debug_loop[] = "Chamando DefineMetaConsolidada para id_meta=0";
            $insert = $consulta_painel_metas->DefineMetaConsolidada($filiais, $tipo_meta, $ano, $mes, $periodo, $semana);
        } else {
            // ATUALIZAÇÃO: Processa normalmente
            foreach ($filiais as $filial => $vendedores) {
                foreach ($vendedores as $cod_vendedor => $meses) {
                    foreach ($meses as $mes => $tipos) {
                        $tipos_meta = [
                            '2' => ['valor1' => $tipos['manipulado1'] ?? null, 'valor2' => $tipos['manipulado2'] ?? null],
                            '1' => ['valor1' => $tipos['revenda1'] ?? null, 'valor2' => $tipos['revenda2'] ?? null],
                            '3' => ['valor1' => $tipos['marca_propria1'] ?? null, 'valor2' => $tipos['marca_propria2'] ?? null],
                        ];

                        foreach ($tipos_meta as $codigo_meta => $valores) {
                            // if (empty($valores['valor1']) && empty($valores['valor2'])) {
                            //     continue;
                            // }

                            if (!empty($valores['valor1']  || $valores['valor2'])) {
                                $v1 = (trim($valores['valor1'] ?? '') === '') ? '0' : $valores['valor1'];
                                $v2 = (trim($valores['valor2'] ?? '') === '') ? '0' : $valores['valor2'];
                                
                                $valor1 = floatval(str_replace(['.', ','], ['', '.'], $v1));
                                $valor2 = floatval(str_replace(['.', ','], ['', '.'], $v2));
                                // $valor1 = str_replace(['.', ','], ['', '.'], $valores['valor1']);
                                // $valor2 = str_replace(['.', ','], ['', '.'], $valores['valor2']);
                                // $valor1 = floatval($valor1);
                                // $valor2 = floatval($valor2);


                                $resultado = $consulta_painel_metas->UpdateDefineMeta(
                                    $id_meta,
                                    $codigo_meta,
                                    $valor1,
                                    $valor2,
                                    null,
                                    $periodo,
                                    $semana,
                                    false // Não registrar log individual
                                );

                                if ($resultado) {
                                    $dados_atualizacoes[] = $resultado;
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    // Registra log consolidado para atualização de metas de vendedor
    if (!empty($dados_atualizacoes)) {
        $consulta_painel_metas->registrarLogConsolidadoAtualizacao($dados_atualizacoes, $tipo_meta);
    }
}

if (!empty($tipo_meta) && $tipo_meta == '3') {
    $dados_atualizacoes = []; // Array para coletar dados das atualizações
    $dados_criacao = []; // Array para coletar dados de criação
    $registros_processados = []; // Controle de duplicatas

    foreach ($metas as $id_meta => $filiais) {
        foreach ($filiais as $filial => $meses) {
            foreach ($meses as $mes => $tipos) {
                $tipos_meta = [
                    '2' => ['valor1' => $tipos['manipulado1'] ?? null, 'valor2' => $tipos['manipulado2'] ?? null],
                    '1' => ['valor1' => $tipos['revenda1'] ?? null, 'valor2' => $tipos['revenda2'] ?? null],
                    '3' => ['valor1' => $tipos['marca_propria1'] ?? null, 'valor2' => $tipos['marca_propria2'] ?? null],
                ];

                foreach ($tipos_meta as $codigo_meta => $valores) {
                    // Verifica se há valores para processar
                    // if (empty($valores['valor1']) && empty($valores['valor2'])) {
                    //     continue;
                    // }





                    if (!empty($valores['valor1']  || $valores['valor2'])) {
                        $v1 = (trim($valores['valor1'] ?? '') === '') ? '0' : $valores['valor1'];
                        $v2 = (trim($valores['valor2'] ?? '') === '') ? '0' : $valores['valor2'];

                        $valor1 = floatval(str_replace(['.', ','], ['', '.'], $v1));
                        $valor2 = floatval(str_replace(['.', ','], ['', '.'], $v2));
                        // $valor1 = str_replace(['.', ','], ['', '.'], $valores['valor1']);
                        // $valor2 = str_replace(['.', ','], ['', '.'], $valores['valor2']);
                        // $valor1 = floatval($valor1);
                        // $valor2 = floatval($valor2);


                        if ($id_meta == 0) {
                            // CRIAÇÃO: Insere sem log individual
                            $id_criado = $consulta_painel_metas->DefineMeta(
                                $filial,
                                $codigo_meta,
                                $tipo_meta,
                                $percentual ?? null,
                                $ano,
                                $mes,
                                $valor1,
                                $valor2,
                                $cod_vendedor ?? 0,
                                $cod_visitador ?? null,
                                $periodo ?? null,
                                $semana ?? null,
                                false // NÃO registrar log individual
                            );

                            if ($id_criado !== false) {
                                $insert = true;
                                $dados_criacao[] = [
                                    'id' => $id_criado,
                                    'codigo_filial' => $filial,
                                    'codigo_meta' => $codigo_meta,
                                    'valor_meta' => $valor1,
                                    'valor_meta_2' => $valor2
                                ];
                            }
                        } else {
                            // ATUALIZAÇÃO
                            $resultado = $consulta_painel_metas->UpdateDefineMeta(
                                $id_meta,
                                $codigo_meta,
                                $valor1,
                                $valor2,
                                0,
                                $periodo,
                                $semana,
                                false // Não registrar log individual
                            );

                            if ($resultado) {
                                $dados_atualizacoes[] = $resultado;
                            }
                        }
                    }
                }
            }
        }
    }

    // Registra log consolidado ÚNICO para criação de metas de loja
    if (!empty($dados_criacao) && isset($_SESSION['CodUsuario'], $_SESSION['NomeUsuario'])) {
        $consulta_painel_metas->registrarLogConsolidadoCriacao($dados_criacao, $tipo_meta, $ano, $mes);
    }

    // Registra log consolidado para atualização de metas de loja
    if (!empty($dados_atualizacoes)) {
        $consulta_painel_metas->registrarLogConsolidadoAtualizacao($dados_atualizacoes, $tipo_meta);
    }
}


if (!empty($tipo_meta) && $tipo_meta == '4') {
    $dados_atualizacoes = []; // Array para coletar dados das atualizações

    foreach ($metas as $id_meta => $filiais) {
        foreach ($filiais as $filial => $visitadores) {
            foreach ($visitadores as $cod_visitador => $meses) {
                foreach ($meses as $mes => $tipos) {
                    $tipos_meta = [
                        '0' => ['valor1' => $tipos['meta1'] ?? null, 'valor2' => $tipos['meta2'] ?? null, 'percentual' => $tipos['percentual'] ?? null],
                        '1' => ['valor1' => $tipos['id_revenda'] ?? null, 'valor2' => $tipos['meta2'] ?? null, 'percentual' => $tipos['percentual_varejo'] ?? null]
                    ];
                    foreach ($tipos_meta as $codigo_meta => $valores) {
                        if (!empty($valores['valor1']  || $valores['valor2'])) {
                            $v1 = (trim($valores['valor1'] ?? '') === '') ? '0' : $valores['valor1'];
                            $v2 = (trim($valores['valor2'] ?? '') === '') ? '0' : $valores['valor2'];
                            $perc = (trim($valores['percentual'] ?? '') === '') ? '0' : $valores['percentual'];
                            
                            $valor1 = floatval(str_replace(['.', ','], ['', '.'], $v1));
                            $valor2 = floatval(str_replace(['.', ','], ['', '.'], $v2));
                            $percentual = floatval(str_replace(['.', ','], ['', '.'], $perc));
                        // $valor1 = str_replace(['.', ','], ['', '.'], $valores['valor1']);
                            // $valor2 = str_replace(['.', ','], ['', '.'], $valores['valor2']);
                            // $percentual = str_replace(['.', ','], ['', '.'], $valores['percentual']);
                            // echo $valor1 . '/';
                            //echo $valor2;
                            // $valor1 = floatval($valor1);
                            // $valor2 = floatval($valor2);
                            // $percentual = floatval($percentual);
                            // var_dump($valor1);
                            // echo '/';
                            // var_dump($valor2);
                            if ($id_meta == 0) {
                                // Primeiro, verifica se já existe no banco
                                $existe = $consulta_painel_metas->VerificaDuplicata(
                                    $filial,
                                    $codigo_meta,
                                    $tipo_meta,
                                    $ano,
                                    $mes,
                                    $cod_vendedor,
                                    $semana
                                );

                                if (!$existe) {
                                    $insert = $consulta_painel_metas->DefineMeta(
                                        $filial,
                                        $codigo_meta,
                                        $tipo_meta,
                                        $percentual ?? null,
                                        $ano,
                                        $mes,
                                        $valor1,
                                        $valor2,
                                        $cod_vendedor ?? 0,
                                        $cod_visitador ?? null,
                                        $periodo ?? null,
                                        $semana ?? null,
                                        true // Registrar log
                                    );
                                }
                            } else {
                                // UPDATE - sem log individual, mas coleta dados
                                $resultado = $consulta_painel_metas->UpdateDefineMeta(
                                    $id_meta,
                                    $codigo_meta,
                                    $valor1,
                                    $valor2,
                                    $percentual,
                                    null,
                                    null,
                                    false // Não registrar log individual
                                );

                                if ($resultado) {
                                    $dados_atualizacoes[] = $resultado;
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    // Registra log consolidado para criação de metas de visitador
    if (isset($metas[0])) { // Se há metas novas (id_meta == 0)
        $consulta_painel_metas->DefineMetaVisitadorConsolidada($metas[0], $tipo_meta, $ano, $mes);
    }

    // Registra log consolidado para atualização de metas de visitador
    if (!empty($dados_atualizacoes)) {
        $consulta_painel_metas->registrarLogConsolidadoAtualizacao($dados_atualizacoes, $tipo_meta);
    }
}

if ($insert) {
    $_SESSION['message'] = 'Meta adicionada com sucesso';
    $location = './lista_metas_definidas.php?status=sucesso&acao=criar';
    if (!empty($url)) {
        $location .= '&' . $url;
    }
    header("Location: $location");
    exit;
} else {
    $_SESSION['message'] = 'Meta atualizada com sucesso';
    $location = './lista_metas_definidas.php?status=sucesso&acao=atualizar';
    if (!empty($url)) {
        $location .= '&' . $url;
    }
    header("Location: $location");
    exit;
}

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