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

// CSRF token
if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

// Verifica se o usuário está logado
if (!isset($_SESSION['logado']) || $_SESSION['logado'] !== true) {
    header('Location: login.php');
    exit;
}

$usuario_id = $_SESSION['usuario_id'] ?? null;
$tenant_id = $_SESSION['tenant_id'] ?? null;

// Processar resposta ao formulário
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['formulario_id']) && isset($_POST['identificador'])) {
    // Verificar CSRF token
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        die("Token CSRF inválido");
    }

    $formulario_id = (int) $_POST['formulario_id'];
    $identificador = trim($_POST['identificador'] ?? 'Anônimo');

    try {
        $conn->begin_transaction();

        // Inserir resposta principal
        $stmt = $conn->prepare("INSERT INTO respostas_formulario (formulario_id, data_resposta, identificador, tenant_id) VALUES (?, NOW(), ?, ?)");
        $stmt->bind_param("isi", $formulario_id, $identificador, $tenant_id);
        $stmt->execute();
        $resposta_formulario_id = $conn->insert_id;
        $stmt->close();

        // Processar cada pergunta
        foreach ($_POST as $key => $value) {
            if (strpos($key, 'pergunta_') === 0) {
                $pergunta_id = (int) str_replace('pergunta_', '', $key);
                
                // Determinar tipo de resposta
                if (is_array($value)) {
                    // Resposta múltipla
                    foreach ($value as $opcao) {
                        $opcao_id = (int) $opcao;
                        $stmt = $conn->prepare("INSERT INTO respostas_usuario (resposta_formulario_id, pergunta_id, opcao_id, tenant_id) VALUES (?, ?, ?, ?)");
                        $stmt->bind_param("iiii", $resposta_formulario_id, $pergunta_id, $opcao_id, $tenant_id);
                        $stmt->execute();
                        $stmt->close();
                    }
                } else {
                    // Resposta aberta ou única
                    $opcao_id = is_numeric($value) ? (int)$value : null;
                    $resposta_texto = is_numeric($value) ? null : trim($value);
                    
                    $stmt = $conn->prepare("INSERT INTO respostas_usuario (resposta_formulario_id, pergunta_id, opcao_id, resposta_texto, tenant_id) VALUES (?, ?, ?, ?, ?)");
                    $stmt->bind_param("iiisi", $resposta_formulario_id, $pergunta_id, $opcao_id, $resposta_texto, $tenant_id);
                    $stmt->execute();
                    $stmt->close();
                }
            }
        }

        $conn->commit();
        $_SESSION['mensagem'] = "Formulário respondido com sucesso!";
        header("Location: " . $_SERVER['PHP_SELF']);
        exit;
    } catch (Exception $e) {
        $conn->rollback();
        die("Erro ao processar formulário: " . $e->getMessage());
    }
}

// Buscar formulários do tenant atual
$formularios = [];
$stmt_forms = $conn->prepare("SELECT id, nome FROM formularios WHERE tenant_id = ? ORDER BY nome");
$stmt_forms->bind_param("i", $tenant_id);
$stmt_forms->execute();
$resultForms = $stmt_forms->get_result();
while ($form = $resultForms->fetch_assoc()) {
    $formularios[] = $form;
}
$stmt_forms->close();
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <meta charset="UTF-8">
  <title>Respostas de Formulários</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      background: #f5f5f5;
      margin: 0;
      padding: 0;
    }
    .header-fixed {
      background: #fff;
      border-bottom: 1px solid #ddd;
      padding: 10px 20px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      position: fixed;
      width: 100%;
      top: 0;
      z-index: 1000;
      box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    }
    .content-wrapper {
      padding: 80px 20px 20px;
      max-width: 1200px;
      margin: 0 auto;
    }
    .formulario {
      background: #fff;
      border: 1px solid #ccc;
      margin-bottom: 15px;
      padding: 15px;
      border-radius: 6px;
      cursor: pointer;
      transition: all 0.3s ease;
    }
    .formulario:hover {
      box-shadow: 0 2px 8px rgba(0,0,0,0.1);
    }
    .respostas-container {
      max-height: 0;
      overflow: hidden;
      transition: max-height 0.4s ease;
    }
    .respostas-container.open {
      max-height: 1000px;
      padding-top: 10px;
    }
    .resposta {
      margin-left: 20px;
      margin-top: 10px;
      padding: 10px;
      background: #f9f9f9;
      border-radius: 4px;
    }
    .pergunta {
      font-weight: bold;
      color: #333;
    }
    select, input[type="text"], textarea {
      width: 100%;
      padding: 8px;
      margin-top: 4px;
      margin-bottom: 12px;
      border: 1px solid #ddd;
      border-radius: 4px;
    }
    form {
      background: #fff;
      padding: 20px;
      border-radius: 6px;
      border: 1px solid #ccc;
      margin-bottom: 30px;
      box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    }
    button {
      background: #4CAF50;
      color: white;
      border: none;
      padding: 10px 15px;
      border-radius: 4px;
      cursor: pointer;
      font-size: 16px;
    }
    button:hover {
      background: #45a049;
    }
    .dropdown-menu {
      display: none;
      position: absolute;
      right: 10px;
      top: 50px;
      background: white;
      border: 1px solid #ccc;
      padding: 10px;
      border-radius: 4px;
      box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    }
    .dropdown-menu a {
      display: block;
      padding: 5px 0;
      color: #333;
      text-decoration: none;
    }
    .dropdown-menu a:hover {
      color: #4CAF50;
    }
    .mensagem {
      padding: 10px;
      margin-bottom: 20px;
      background: #dff0d8;
      color: #3c763d;
      border-radius: 4px;
    }
  </style>
</head>
<body>

<div class="header-fixed">
  <div><strong>Sistema de Respostas</strong></div>
  <div><button onclick="toggleMenu()">☰ Menu</button></div>
  <div class="dropdown-menu" id="dropdownMenu">
    <a href="index.php">🏠 Início</a>
    <a href="logout.php">🚪 Sair</a>
  </div>
</div>

<div class="content-wrapper">
  <?php if (isset($_SESSION['mensagem'])): ?>
    <div class="mensagem"><?= htmlspecialchars($_SESSION['mensagem']) ?></div>
    <?php unset($_SESSION['mensagem']); ?>
  <?php endif; ?>

  <h2>📝 Responder Formulário</h2>
  <form method="POST">
    <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
    
    <label for="formulario_id">Escolha um formulário:</label>
    <select name="formulario_id" id="formulario_id" required onchange="this.form.submit()">
      <option value="">Selecione...</option>
      <?php foreach ($formularios as $form): ?>
        <option value="<?= $form['id'] ?>" <?= isset($_POST['formulario_id']) && $_POST['formulario_id'] == $form['id'] ? 'selected' : '' ?>>
          <?= htmlspecialchars($form['nome']) ?>
        </option>
      <?php endforeach; ?>
    </select>

    <?php if (!empty($_POST['formulario_id'])): ?>
      <label for="identificador">Identifique-se:</label>
      <input type="text" name="identificador" id="identificador" placeholder="Seu nome ou identificação..." required>

      <?php
      $formulario_id = (int) $_POST['formulario_id'];
      $stmt = $conn->prepare("SELECT id, texto, tipo FROM perguntas WHERE formulario_id = ? AND parent_resposta_id IS NULL ORDER BY id");
      $stmt->bind_param("i", $formulario_id);
      $stmt->execute();
      $perguntas = $stmt->get_result();

      while ($p = $perguntas->fetch_assoc()) {
          echo "<div class='pergunta-container'>";
          echo "<label>{$p['texto']}</label>";
          $pid = $p['id'];

          // Buscar opções para perguntas de múltipla escolha ou única escolha
          if ($p['tipo'] === 'multipla' || $p['tipo'] === 'unica') {
              $q = $conn->prepare("SELECT id, texto FROM opcoes_resposta WHERE pergunta_id = ?");
              $q->bind_param("i", $pid);
              $q->execute();
              $opcoes = $q->get_result();

              if ($opcoes->num_rows > 0) {
                  $input_type = $p['tipo'] === 'multipla' ? 'checkbox' : 'radio';
                  echo "<div class='opcoes-container'>";
                  while ($o = $opcoes->fetch_assoc()) {
                      echo "<label class='opcao-label'>";
                      echo "<input type='$input_type' name='pergunta_{$pid}" . ($input_type === 'checkbox' ? '[]' : '') . "' value='{$o['id']}'>";
                      echo " {$o['texto']}";
                      echo "</label>";
                  }
                  echo "</div>";
              }
          } else {
              // Campo de texto para perguntas abertas
              echo "<textarea name='pergunta_{$pid}'></textarea>";
          }
          echo "</div>";
      }
      ?>
      <button type="submit">Enviar Resposta</button>
    <?php endif; ?>
  </form>

  <h2>📄 Respostas Registradas</h2>
  <?php
  $sql = "
    SELECT rf.id AS resposta_id, f.nome AS nome_formulario, rf.data_resposta, rf.identificador
    FROM respostas_formulario rf
    JOIN formularios f ON rf.formulario_id = f.id
    WHERE rf.tenant_id = ?
    ORDER BY rf.data_resposta DESC
  ";

  $stmt_respostas = $conn->prepare($sql);
  $stmt_respostas->bind_param("i", $tenant_id);
  $stmt_respostas->execute();
  $result = $stmt_respostas->get_result();

  if ($result->num_rows === 0) {
      echo "<p>Nenhuma resposta registrada ainda.</p>";
  }

  while ($row = $result->fetch_assoc()) {
      $resposta_id = $row['resposta_id'];
      echo "<div class='formulario' onclick='toggleRespostas($resposta_id)'>";
      echo "<h3>📋 " . htmlspecialchars($row['nome_formulario']) . "</h3>";
      echo "<small>Respondido por: <strong>" . htmlspecialchars($row['identificador']) . "</strong><br>Em: " . date('d/m/Y H:i', strtotime($row['data_resposta'])) . "</small>";
      echo "<div class='respostas-container' id='respostas_$resposta_id'>";

      // Consulta corrigida para buscar respostas
      $sqlRespostas = "
        SELECT 
          p.id AS pergunta_id,
          p.texto AS pergunta,
          p.tipo AS tipo_pergunta,
          GROUP_CONCAT(DISTINCT o.texto ORDER BY o.id SEPARATOR ', ') AS opcoes_selecionadas,
          GROUP_CONCAT(DISTINCT ru.resposta_texto SEPARATOR ', ') AS resposta_texto
        FROM respostas_usuario ru
        JOIN perguntas p ON ru.pergunta_id = p.id
        LEFT JOIN opcoes_resposta o ON ru.opcao_id = o.id
        WHERE ru.resposta_formulario_id = ? AND ru.tenant_id = ?
        GROUP BY p.id, p.texto, p.tipo
        ORDER BY p.id
      ";
      
      $stmt2 = $conn->prepare($sqlRespostas);
      $stmt2->bind_param("ii", $resposta_id, $tenant_id);
      $stmt2->execute();
      $respostas = $stmt2->get_result();

      while ($res = $respostas->fetch_assoc()) {
          echo "<div class='resposta'>";
          echo "<div class='pergunta'>" . htmlspecialchars($res['pergunta']) . "</div>";
          
          // Exibir resposta de acordo com o tipo
          if ($res['tipo_pergunta'] === 'aberta') {
              echo "<div>Resposta: " . (!empty($res['resposta_texto']) ? htmlspecialchars($res['resposta_texto']) : 'Nenhuma resposta fornecida') . "</div>";
          } elseif ($res['tipo_pergunta'] === 'multipla') {
              echo "<div>Opções selecionadas: " . (!empty($res['opcoes_selecionadas']) ? htmlspecialchars($res['opcoes_selecionadas']) : 'Nenhuma opção selecionada') . "</div>";
          } elseif ($res['tipo_pergunta'] === 'unica') {
              echo "<div>Opção selecionada: " . (!empty($res['opcoes_selecionadas']) ? htmlspecialchars($res['opcoes_selecionadas']) : 'Nenhuma opção selecionada') . "</div>";
          }
          
          echo "</div>";
      }

      echo "</div></div>";
  }
  ?>
</div>

<script>
  function toggleRespostas(id) {
    const div = document.getElementById('respostas_' + id);
    div.classList.toggle('open');
  }

  function toggleMenu() {
    const menu = document.getElementById('dropdownMenu');
    menu.style.display = menu.style.display === 'block' ? 'none' : 'block';
  }

  // Fechar menu ao clicar fora
  document.addEventListener('click', function(event) {
    const menu = document.getElementById('dropdownMenu');
    const button = document.querySelector('.header-fixed button');
    if (!menu.contains(event.target) && event.target !== button) {
      menu.style.display = 'none';
    }
  });
</script>
</body>
</html>