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

header('Content-Type: application/json');

try {
    // Receber e decodificar os dados JSON
    $json = file_get_contents('php://input');
    $data = json_decode($json, true);

    if (!isset($data['action']) || $data['action'] !== 'salvarProcessos') {
        throw new Exception('Dados inválidos');
    }

    $processos = isset($data['processos']) ? $data['processos'] : array();
    $success = true;
    $message = '';

    // Usar a conexão MySQL
    $mysqli = new mysqli($servername, $username, $password, "mandareceita");

    if ($mysqli->connect_error) {
        throw new Exception("Falha na conexão com o banco de dados: " . $mysqli->connect_error);
    }

    // Iniciar transação
    $mysqli->begin_transaction();

    try {
        // Primeiro, deletar todos os registros existentes
        $query = "DELETE FROM define_processos";
        if (!$mysqli->query($query)) {
            throw new Exception('Erro ao limpar registros existentes: ' . $mysqli->error);
        }

        // Inserir os novos processos
        if (!empty($processos)) {
            // Preparar a query de inserção
            $query = "INSERT INTO define_processos (id_processo, nome_processo) VALUES (?, ?)";
            $stmt = $mysqli->prepare($query);
            
            if (!$stmt) {
                throw new Exception('Erro ao preparar a query: ' . $mysqli->error);
            }

            foreach ($processos as $processo) {
                $id_processo = $processo['id_modulo'];
                $nome_processo = $processo['nome_modulo'];
                
                $stmt->bind_param('ss', $id_processo, $nome_processo);
                
                if (!$stmt->execute()) {
                    throw new Exception('Erro ao inserir processo: ' . $stmt->error);
                }
            }
            
            $stmt->close();
        }

        // Commit da transação
        $mysqli->commit();
        $message = 'Processos atualizados com sucesso!';
        $success = true;

    } catch (Exception $e) {
        // Rollback em caso de erro
        $mysqli->rollback();
        throw $e;
    }

    // Retornar resposta de sucesso
    echo json_encode([
        'success' => $success,
        'message' => $message
    ]);

} catch (Exception $e) {
    // Retornar resposta de erro
    echo json_encode([
        'success' => false,
        'message' => 'Erro: ' . $e->getMessage()
    ]);
}

// Fechar a conexão
if (isset($mysqli)) {
    $mysqli->close();
}
