<?php
declare(strict_types=1);

require_once __DIR__ . '/db.php';

try {
    cadastro_require_write_access();
    $pdo = cadastro_pdo();
    $schema = cadastro_schema();
    $qSchema = cadastro_quote_ident($schema);
    $json = cadastro_read_json();

    $entity = trim((string)($json['entity'] ?? ''));
    $id = trim((string)($json['id'] ?? ''));
    if ($id === '') cadastro_out(['ok' => false, 'message' => 'ID obrigatório'], 400);

    if ($entity === 'construcao') {
        $st = $pdo->prepare("DELETE FROM {$qSchema}.ctm_construcoes WHERE id_const = :id");
        $st->execute([':id' => (int)$id]);
        cadastro_out(['ok' => true, 'message' => 'Construção excluída', 'deleted' => $st->rowCount(), 'id' => (int)$id]);
    }

    if ($entity === 'componente') {
        $st = $pdo->prepare("DELETE FROM {$qSchema}.ctm_componentes WHERE id_comp = :id");
        $st->execute([':id' => (int)$id]);
        cadastro_out(['ok' => true, 'message' => 'Componente excluído', 'deleted' => $st->rowCount(), 'id' => (int)$id]);
    }

    if ($entity === 'lote') {
        // Novo DDL: ctm_lotes não possui campo ativo. Mantemos exclusão lógica.
        // Pode receber id_lote ou sequencial_contribuinte.
        if (preg_match('/^\d+$/', $id)) {
            $st = $pdo->prepare("UPDATE {$qSchema}.ctm_lotes SET situacao = 'EXCLUIDO', status_conf = 'EXCLUIDO', updated_at = now(), updated_by = :user WHERE id_lote = :id OR sequencial_contribuinte = :seq");
            $st->execute([':id' => (int)$id, ':seq' => $id, ':user' => cadastro_user()]);
        } else {
            $st = $pdo->prepare("UPDATE {$qSchema}.ctm_lotes SET situacao = 'EXCLUIDO', status_conf = 'EXCLUIDO', updated_at = now(), updated_by = :user WHERE sequencial_contribuinte = :seq");
            $st->execute([':seq' => $id, ':user' => cadastro_user()]);
        }
        cadastro_out(['ok' => true, 'message' => 'Lote marcado como EXCLUIDO em ctm_lotes', 'updated' => $st->rowCount(), 'id' => $id]);
    }

    cadastro_out(['ok' => false, 'message' => 'Entity inválida para exclusão: ' . $entity], 400);
} catch (Throwable $e) {
    cadastro_out(['ok' => false, 'message' => 'Erro ao excluir: ' . $e->getMessage()], 500);
}
