<?php
require '../conexao/conexao.php';
require_once '../conexao/logs.php';
require '../sessao.php';

$ano = $_POST['ano'] ?? null;
$mes = $_POST['mes'] ?? null;
$codigo_etapa = $_POST['etapa'] ?? null;
$valor_meta = $_POST['meta'] ?? [];
$filial = $_POST['filial'] ?? null;

if ($connectionmysql->connect_error) {
    die('Erro na conexão com o banco de dados MySQLi: ' . $connectionmysql->connect_error);
}

// Prepara as consultas
$stmt_select = $connectionmysql->prepare("SELECT id_metas_etapas_pcp, meta 
    FROM metas_etapas_pcp 
    WHERE ano = ? AND mes = ? AND id_etapa = ? AND codigo_filial = ? AND id_metas_etapas_pcp = ?");
$stmt_update = $connectionmysql->prepare("UPDATE metas_etapas_pcp SET meta = ? WHERE id_metas_etapas_pcp = ?");
$stmt_insert = $connectionmysql->prepare("INSERT INTO metas_etapas_pcp (ano, mes, id_etapa, meta, codigo_filial) VALUES (?, ?, ?, ?, ?)");

// Arrays para armazenar alterações e criações
$alteracoes = [];
$criacoes = [];

foreach ($valor_meta as $id_metas_etapas_pcp => $meta_valor) {
    // Executa o SELECT
    $stmt_select->bind_param('iiiii', $ano, $mes, $codigo_etapa, $filial, $id_metas_etapas_pcp);
    $stmt_select->execute();
    $result_meta = $stmt_select->get_result();

    if ($result_meta->num_rows > 0) {
        // Atualização
        $row = $result_meta->fetch_assoc();
        $dados_antes = ['meta' => $row['meta']];
        $dados_depois = ['meta' => $meta_valor];

        $stmt_update->bind_param('ii', $meta_valor, $id_metas_etapas_pcp);
        $stmt_update->execute();

        $alteracoes[] = [
            'id' => $id_metas_etapas_pcp,
            'antes' => $dados_antes,
            'depois' => $dados_depois
        ];

    } else {
        // Criação
        $stmt_insert->bind_param('iiiii', $ano, $mes, $codigo_etapa, $meta_valor, $filial);
        $stmt_insert->execute();
        $novo_id = $stmt_insert->insert_id;

        $dados_depois = [
            'ano' => $ano,
            'mes' => $mes,
            'id_etapa' => $codigo_etapa,
            'meta' => $meta_valor,
            'codigo_filial' => $filial
        ];

        $criacoes[] = [
            'id' => $novo_id,
            'depois' => $dados_depois
        ];
    }
}

// Registrar logs apenas **uma vez** por tipo de ação
if (isset($_SESSION['CodUsuario'], $_SESSION['NomeUsuario'])) {
    // Logs de atualização
    foreach ($alteracoes as $alter) {
        registrarLogAtualizacaoInteligente(
            11,
            $_SESSION['CodUsuario'],
            $_SESSION['NomeUsuario'],
            $alter['antes'],
            $alter['depois'],
            $alter['id']
        );
    }

    // Logs de criação
    foreach ($criacoes as $criar) {
        registrarLogCriacaoDetalhado(
            11,
            $_SESSION['CodUsuario'],
            $_SESSION['NomeUsuario'],
            json_encode($criar['depois']),
            $criar['id']
        );
    }
}

// Fechar statements
$stmt_select->close();
$stmt_update->close();
$stmt_insert->close();

// Define ação global para redirecionamento
$acao_global = !empty($criacoes) ? 'criar' : (!empty($alteracoes) ? 'atualizar' : 'nenhuma');

header("Location: metas_etapas.php?status=sucesso&acao={$acao_global}&filial={$filial}&ano={$ano}&mes={$mes}&form_submitted=1");
exit();
