<?php
require '../configuacoes.php';
require '../conexao/conexao.php';
require_once '../conexao/logs.php';
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nomeErro = trim($_POST['nomeErro'] ?? '');
    $idErro = $_POST['id_erro'] ?? null;
    $peso = str_replace(',', '.', $_POST['pesoErro'] ?? '');
    $query_string = $_POST['url'] ?? '';

    // Validações básicas
    if (empty($nomeErro)) {
        header("Location: index.php?status=erro&mensagem=Nome do erro é obrigatório");
        exit;
    }

    if ($peso === '') {
        header("Location: index.php?status=erro&mensagem=Peso é obrigatório");
        exit;
    }

    try {
        $connectionmysql->begin_transaction();

        if (empty($idErro) || $idErro == 0) {
            // 🔹 Inserção
            $stmt = $connectionmysql->prepare(
                "INSERT INTO kpi.mapa_erros (nome_erro, peso) VALUES (?, ?)"
            );
            $stmt->bind_param("ss", $nomeErro, $peso);
            $stmt->execute();
            $novo_id = $stmt->insert_id;

            // 🔹 Dados depois da criação
            $dados_depois = [
                'nome_erro' => $nomeErro,
                'peso' => $peso
            ];

            // 🔹 Registra log de criação
            if (isset($_SESSION['CodUsuario'], $_SESSION['NomeUsuario'])) {
                registrarLogCriacaoDetalhado(
                    31,
                    $_SESSION['CodUsuario'],
                    $_SESSION['NomeUsuario'],
                    json_encode($dados_depois),
                    $novo_id
                );
            }

            $acao = "criar";

        } else {
            // 🔹 Pega dados antes da atualização
            $stmt_sel = $connectionmysql->prepare(
                "SELECT nome_erro, peso FROM kpi.mapa_erros WHERE id_erro = ?"
            );
            $stmt_sel->bind_param("i", $idErro);
            $stmt_sel->execute();
            $result = $stmt_sel->get_result();
            $dados_antes = $result->fetch_assoc() ?: [];
            $stmt_sel->close();

            // 🔹 Atualização
            $stmt = $connectionmysql->prepare(
                "UPDATE kpi.mapa_erros SET nome_erro = ?, peso = ? WHERE id_erro = ?"
            );
            $stmt->bind_param("ssi", $nomeErro, $peso, $idErro);
            $stmt->execute();

            // 🔹 Dados depois da atualização
            $dados_depois = [
                'nome_erro' => $nomeErro,
                'peso' => $peso
            ];

            // 🔹 Registra log de atualização
            if (isset($_SESSION['CodUsuario'], $_SESSION['NomeUsuario'])) {
                registrarLogAtualizacaoInteligente(
                    31,
                    $_SESSION['CodUsuario'],
                    $_SESSION['NomeUsuario'],
                    $dados_antes,
                    $dados_depois,
                    $idErro
                );
            }

            $acao = "atualizar";
        }

        $connectionmysql->commit();

        header("Location: index.php?status=sucesso&acao={$acao}&{$query_string}");
        exit();

    } catch (Exception $e) {
        $connectionmysql->rollback();
        echo "Erro: " . $e->getMessage();
    } finally {
        if (isset($stmt)) $stmt->close();
        $connectionmysql->close();
    }
}
