<?php
require_once 'conexao.php';

$formulario_id = $_GET['id'] ?? null;
if (!$formulario_id) {
    echo "Formulário não especificado.";
    exit;
}

$stmt = $conn->prepare("SELECT nome FROM formularios WHERE id = ?");
$stmt->bind_param("i", $formulario_id);
$stmt->execute();
$formulario = $stmt->get_result()->fetch_assoc();
if (!$formulario) {
    echo "Formulário não encontrado.";
    exit;
}

function getPerguntasComCondicionais($conn, $formulario_id) {
    $sql = "SELECT * FROM perguntas WHERE formulario_id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("i", $formulario_id);
    $stmt->execute();
    $perguntas = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);

    $sql = "SELECT * FROM opcoes_resposta";
    $respostas = $conn->query($sql)->fetch_all(MYSQLI_ASSOC);

    $map = [];
    foreach ($perguntas as $p) {
        $p['respostas'] = [];
        $p['condicionais'] = [];
        $map[$p['id']] = $p;
    }

    foreach ($respostas as $r) {
        if (isset($map[$r['pergunta_id']])) {
            $map[$r['pergunta_id']]['respostas'][] = $r;
        }
    }

    foreach ($map as $p) {
        if ($p['parent_resposta_id']) {
            foreach ($map as &$m) {
                foreach ($m['respostas'] as $r) {
                    if ($r['id'] == $p['parent_resposta_id']) {
                        $m['condicionais'][$r['id']][] = $p;
                    }
                }
            }
        }
    }

    return array_filter($map, fn($p) => is_null($p['parent_resposta_id']));
}

$perguntas = getPerguntasComCondicionais($conn, $formulario_id);
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <meta charset="UTF-8">
  <title>Responder Formulário</title>
  <style>
    body { font-family: Arial; margin: 20px; }
    .pergunta { margin: 15px 0; }
    .condicional { margin-left: 30px; display: none; padding: 8px; background: #f0f0f0; border-left: 3px solid #ccc; }
  </style>
</head>
<body>

<h2><?= htmlspecialchars($formulario['nome']) ?></h2>

<form method="post" action="salvar_resposta.php">
  <input type="hidden" name="formulario_id" value="<?= $formulario_id ?>">

  <label>Seu e-mail:</label><br>
  <input type="email" name="identificador" required><br><br>

  <!-- perguntas são renderizadas aqui -->

  <button type="submit">Enviar Resposta</button>


  <?php
  function renderPergunta($p, $formulario_id) {
      echo "<div class='pergunta' id='pergunta_{$p['id']}'>";
      echo "<strong>" . htmlspecialchars($p['texto']) . "</strong><br>";

      if ($p['tipo'] === 'aberta') {
          echo "<input type='text' name='pergunta_{$p['id']}'><br>";
      } else {
          foreach ($p['respostas'] as $r) {
              $inputType = $p['tipo'] === 'multipla' ? 'checkbox' : 'radio';
              $name = $inputType === 'checkbox' ? "pergunta_{$p['id']}[]" : "pergunta_{$p['id']}";
              echo "<label><input type='$inputType' name='$name' value='{$r['id']}' data-condicional='condicional_{$r['id']}' onchange='toggleCondicional(this)'> " . htmlspecialchars($r['texto']) . "</label><br>";

              if (!empty($p['condicionais'][$r['id']])) {
                  echo "<div class='condicional' id='condicional_{$r['id']}'>";
                  foreach ($p['condicionais'][$r['id']] as $condicional) {
                      renderPergunta($condicional, $formulario_id);
                  }
                  echo "</div>";
              }
          }
      }

      echo "</div>";
  }

  foreach ($perguntas as $p) {
      renderPergunta($p, $formulario_id);
  }
  ?>

  <br>
  <button type="submit">Enviar Resposta</button>
</form>

<script>
function toggleCondicional(input) {
  const condId = input.getAttribute('data-condicional');
  const condDiv = document.getElementById(condId);

  if (!condDiv) return;

  if (input.type === 'radio') {
    document.querySelectorAll(`input[name='${input.name}']`).forEach(el => {
      const cid = el.getAttribute('data-condicional');
      const cdiv = document.getElementById(cid);
      if (cdiv) cdiv.style.display = 'none';
    });
  }

  condDiv.style.display = input.checked ? 'block' : 'none';
}
</script>

</body>
</html>
