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

$campoId = isset($_POST['id']) ? (int) $_POST['id'] : 0;
$formularioId = isset($_POST['fid']) ? (int) $_POST['fid'] : 0;

if ($campoId <= 0 || $formularioId <= 0) {
    die('Parâmetros inválidos.');
}

$stmt = $pdo->prepare('SELECT * FROM formulario_campos WHERE id = :id AND formulario_id = :fid');
$stmt->execute(array('id' => $campoId, 'fid' => $formularioId));
$campo = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$campo) {
    die('Campo não encontrado.');
}

try {
    $pdo->beginTransaction();

    $arquivos = array();
    if (in_array((string) $campo['tipo'], array('file', 'image'), true)) {
        $stmt2 = $pdo->prepare('SELECT valor FROM formulario_respostas_campos WHERE campo_id = :cid AND valor IS NOT NULL AND valor <> ""');
        $stmt2->execute(array('cid' => $campoId));
        $arquivos = $stmt2->fetchAll(PDO::FETCH_COLUMN);
    }

    $stmt = $pdo->prepare('DELETE FROM formulario_respostas_campos WHERE campo_id = :cid');
    $stmt->execute(array('cid' => $campoId));

    $stmt = $pdo->prepare('DELETE FROM formulario_campos WHERE id = :id');
    $stmt->execute(array('id' => $campoId));

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

header('Location: formulario_edit.php?id=' . $formularioId);
exit;
