<?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.');
}

$formularioId = isset($_POST['id']) ? (int) $_POST['id'] : 0;
if ($formularioId <= 0) {
    die('Formulário não especificado.');
}

try {
    $pdo->beginTransaction();

    $stmt = $pdo->prepare('SELECT id FROM formularios WHERE id = :fid');
    $stmt->execute(array('fid' => $formularioId));
    if (!$stmt->fetchColumn()) {
        throw new RuntimeException('Formulário não encontrado.');
    }

    $stmtArquivos = $pdo->prepare(
        "SELECT frc.valor
         FROM formulario_respostas_campos frc
         INNER JOIN formulario_campos fc ON fc.id = frc.campo_id
         WHERE fc.formulario_id = :fid
           AND fc.tipo IN ('file', 'image')
           AND frc.valor IS NOT NULL
           AND frc.valor <> ''"
    );
    $stmtArquivos->execute(array('fid' => $formularioId));
    $arquivos = $stmtArquivos->fetchAll(PDO::FETCH_COLUMN);

    $stmt = $pdo->prepare('DELETE FROM formulario_respostas_campos WHERE campo_id IN (SELECT id FROM formulario_campos WHERE formulario_id = :fid)');
    $stmt->execute(array('fid' => $formularioId));

    $stmt = $pdo->prepare('DELETE FROM formulario_respostas WHERE formulario_id = :fid');
    $stmt->execute(array('fid' => $formularioId));

    $stmt = $pdo->prepare('DELETE FROM formulario_campos WHERE formulario_id = :fid');
    $stmt->execute(array('fid' => $formularioId));

    $stmt = $pdo->prepare('DELETE FROM formularios WHERE id = :fid');
    $stmt->execute(array('fid' => $formularioId));

    $pdo->commit();
    deleteStoredFiles($arquivos, __DIR__);
} catch (Throwable $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    die('Erro ao excluir formulário.');
}

header('Location: formularios.php');
exit;
