<?php
require_once 'conexao.php';
session_start();

// Ativa exibição de erros (temporariamente para depuração)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// Função simples de log
function log_debug($msg) {
    file_put_contents(__DIR__ . '/log_clonagem.txt', date('[Y-m-d H:i:s] ') . $msg . "\n", FILE_APPEND);
}

// Verifica ID do formulário original
$original_id = $_GET['formulario_id'] ?? null;
if (!$original_id) {
    die("ID do formulário original é obrigatório.");
}

log_debug("Iniciando clonagem do formulário ID: $original_id");

// Clonar o formulário
$stmt = $conn->prepare("SELECT nome, tenant_id FROM formularios WHERE id = ?");
$stmt->bind_param("i", $original_id);
$stmt->execute();
$stmt->bind_result($nome, $tenant_id);
if (!$stmt->fetch()) {
    die("Formulário não encontrado.");
}
$stmt->close();

$novo_nome = $nome . ' (Clone em ' . date('Y-m-d H:i:s') . ')';
$stmt = $conn->prepare("INSERT INTO formularios (nome, tenant_id) VALUES (?, ?)");
$stmt->bind_param("si", $novo_nome, $tenant_id);
$stmt->execute();
$novo_formulario_id = $stmt->insert_id;
log_debug("Novo formulário criado com ID: $novo_formulario_id");
$stmt->close();

// Mapeamentos
$map_perguntas = [];
$map_respostas = [];

// Clonar perguntas principais
$stmt = $conn->prepare("SELECT id, texto, tipo FROM perguntas WHERE formulario_id = ? AND parent_resposta_id IS NULL");
$stmt->bind_param("i", $original_id);
$stmt->execute();
$perguntas = $stmt->get_result();

while ($p = $perguntas->fetch_assoc()) {
    $old_pergunta_id = $p['id'];
    $stmt2 = $conn->prepare("INSERT INTO perguntas (formulario_id, texto, tipo) VALUES (?, ?, ?)");
    $stmt2->bind_param("iss", $novo_formulario_id, $p['texto'], $p['tipo']);
    $stmt2->execute();
    $new_pergunta_id = $stmt2->insert_id;
    $stmt2->close();

    $map_perguntas[$old_pergunta_id] = $new_pergunta_id;
    log_debug("Pergunta $old_pergunta_id clonada para $new_pergunta_id");

    // Clonar opções de resposta
    $stmt3 = $conn->prepare("SELECT id, texto FROM opcoes_resposta WHERE pergunta_id = ?");
    $stmt3->bind_param("i", $old_pergunta_id);
    $stmt3->execute();
    $opcoes = $stmt3->get_result();

    while ($o = $opcoes->fetch_assoc()) {
        $old_opcao_id = $o['id'];
        $stmt4 = $conn->prepare("INSERT INTO opcoes_resposta (pergunta_id, texto) VALUES (?, ?)");
        $stmt4->bind_param("is", $new_pergunta_id, $o['texto']);
        $stmt4->execute();
        $new_opcao_id = $stmt4->insert_id;
        $stmt4->close();

        $map_respostas[$old_opcao_id] = $new_opcao_id;
        log_debug("Opção $old_opcao_id clonada para $new_opcao_id");
    }

    $stmt3->close();
}

// Clonar perguntas condicionais (parent_resposta_id)
$stmt = $conn->prepare("SELECT id, texto, tipo, parent_resposta_id FROM perguntas WHERE formulario_id = ? AND parent_resposta_id IS NOT NULL");
$stmt->bind_param("i", $original_id);
$stmt->execute();
$condicionais = $stmt->get_result();

while ($p = $condicionais->fetch_assoc()) {
    $old_parent_resposta_id = $p['parent_resposta_id'];
    $new_parent_resposta_id = $map_respostas[$old_parent_resposta_id] ?? null;
    if (!$new_parent_resposta_id) {
        log_debug("AVISO: parent_resposta_id $old_parent_resposta_id não encontrado no mapa.");
        continue;
    }

    $stmt2 = $conn->prepare("INSERT INTO perguntas (formulario_id, texto, tipo, parent_resposta_id) VALUES (?, ?, ?, ?)");
    $stmt2->bind_param("issi", $novo_formulario_id, $p['texto'], $p['tipo'], $new_parent_resposta_id);
    $stmt2->execute();
    $new_condicional_id = $stmt2->insert_id;
    $stmt2->close();

    log_debug("Pergunta condicional clonada para $new_condicional_id com parent $new_parent_resposta_id");
}

log_debug("Clonagem concluída com sucesso.");

// Redireciona para o formulário clonado
header("Location: formulario_responder.php?formulario_id=$novo_formulario_id");
exit;
