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

$campoId = isset($_GET['id']) ? (int) $_GET['id'] : 0;
$formularioId = isset($_GET['fid']) ? (int) $_GET['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(['id' => $campoId, 'fid' => $formularioId]);
$campo = $stmt->fetch();

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

try {
    $pdo->beginTransaction();

    $arquivos = [];
    if (in_array($campo['tipo'], ['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(['cid' => $campoId]);
        $arquivos = $stmt2->fetchAll(PDO::FETCH_COLUMN);
    }

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

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

    $pdo->commit();

    foreach ($arquivos as $arquivo) {
        $arquivo = ltrim((string) $arquivo, '/');
        $filePath = __DIR__ . '/' . $arquivo;
        if (is_file($filePath)) {
            @unlink($filePath);
        }
    }
} catch (Throwable $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    die('Erro ao excluir campo.');
}

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