<?php
include 'auth.php';
include 'db.php';
include 'formulario_utils.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    die('Método não permitido.');
}

$ids = [];
if (isset($_POST['ids'])) {
    $rawIds = is_array($_POST['ids']) ? $_POST['ids'] : explode(',', (string) $_POST['ids']);
    $ids = array_map('intval', $rawIds);
} elseif (isset($_POST['id'])) {
    $ids = [(int) $_POST['id']];
}

$ids = array_values(array_unique(array_filter($ids, function ($id) {
    return (int) $id > 0;
})));
if ($ids === []) {
    die('ID(s) inválido(s)!');
}

$placeholders = implode(',', array_fill(0, count($ids), '?'));
$stmt = $pdo->prepare("SELECT id, formulario_id FROM formulario_respostas WHERE id IN ({$placeholders})");
$stmt->execute($ids);
$respostas = $stmt->fetchAll(PDO::FETCH_ASSOC) ?: [];
if ($respostas === []) {
    die('Resposta(s) não encontrada(s).');
}

$formIds = array();
foreach ($respostas as $row) {
    $formIds[] = (int) $row['formulario_id'];
}
$formIds = array_values(array_unique($formIds));
if (count($formIds) !== 1) {
    die('Selecione respostas do mesmo formulário.');
}
$formId = $formIds[0];

$idsValidos = array();
foreach ($respostas as $row) {
    $idsValidos[] = (int) $row['id'];
}
$placeholders = implode(',', array_fill(0, count($idsValidos), '?'));

try {
    $pdo->beginTransaction();

    $stmtArquivos = $pdo->prepare(
        "SELECT frc.valor
         FROM formulario_respostas_campos frc
         INNER JOIN formulario_campos fc ON fc.id = frc.campo_id
         WHERE frc.resposta_id IN ({$placeholders})
           AND fc.tipo IN ('file', 'image')
           AND frc.valor IS NOT NULL
           AND frc.valor <> ''"
    );
    $stmtArquivos->execute($idsValidos);
    $arquivos = array_values(array_unique(array_filter(array_map('strval', $stmtArquivos->fetchAll(PDO::FETCH_COLUMN)))));

    $stmtDeleteCampos = $pdo->prepare("DELETE FROM formulario_respostas_campos WHERE resposta_id IN ({$placeholders})");
    $stmtDeleteCampos->execute($idsValidos);

    $stmtDeleteRespostas = $pdo->prepare("DELETE FROM formulario_respostas WHERE id IN ({$placeholders})");
    $stmtDeleteRespostas->execute($idsValidos);

    $pdo->commit();
} catch (Throwable $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    die('Erro ao deletar respostas.');
}

deleteStoredFiles($arquivos, __DIR__);

header('Location: formulario_Resposta.php?id=' . $formId);
exit;
