<?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, static fn(int $id): bool => $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_values(array_unique(array_map(static fn(array $row): int => (int) $row['formulario_id'], $respostas)));
if (count($formIds) !== 1) {
    die('Selecione respostas do mesmo formulário.');
}
$formId = $formIds[0];

$idsValidos = array_map(static fn(array $row): int => (int) $row['id'], $respostas);
$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.');
}

foreach ($arquivos as $arquivo) {
    $filePath = resolveStoredLocalFilePath($arquivo, __DIR__);
    if ($filePath !== null && is_file($filePath)) {
        @unlink($filePath);
    }
}

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