Перейти к основному содержимому

DeleteLayoutTopdownPanoramaCommand (Admin)

Назначение

Удаление записи вида сверху над планировкой (LayoutTopdownPanoramaEntity) по идентификатору и всех связанных с ней кадров (LayoutTopdownPanoramaFrameEntity). Используется в Admin API для очистки данных о виде сверху.

Цель

Позволить администратору удалить вид сверху и его кадры одним вызовом, обеспечивая целостность данных (каскадное удаление кадров по FK или явное удаление в рамках команды).

Command: DeleteLayoutTopdownPanoramaCommand (Входные данные)

ПолеТипОбязательностьОписание
LayoutTopdownPanoramaIdGuidОбязательноеИдентификатор записи вида сверху (Id из LayoutTopdownPanoramaEntity)
примечание

TenantId берётся из контекста запроса.

Result: DeleteLayoutTopdownPanoramaCommandResult (Выходные данные)

ПолеТипОбязательностьОписание
SuccessboolОбязательноеПризнак успешного выполнения

При ошибке возвращается результат с ошибкой (FluentResult); при успехе — Success = true.

Валидация

  • Запись LayoutTopdownPanoramaEntity с указанным LayoutTopdownPanoramaId и TenantId должна существовать. При отсутствии — вернуть ошибку «Вид сверху не найден».
  • Перед удалением проверять принадлежность записи тенанту (TenantId).

Ограничения

  • Удаляются только записи, принадлежащие текущему тенанту.
  • Связанные LayoutTopdownPanoramaFrameEntity удаляются в рамках той же транзакции (каскад по FK или явное удаление в handler).

Бизнес-логика (Handler)

  1. Получить сущность LayoutTopdownPanoramaEntity по LayoutTopdownPanoramaId и TenantId. Если не найдена — вернуть ошибку «Вид сверху не найден».
  2. Удалить все сущности LayoutTopdownPanoramaFrameEntity по LayoutTopdownPanoramaId (связь по FK). Порядок: сначала кадры, затем запись вида сверху — либо каскадное удаление по правилам БД.
  3. Удалить сущность LayoutTopdownPanoramaEntity.
  4. Сохранить изменения. Сформировать DeleteLayoutTopdownPanoramaCommandResult (Success = true).
  5. Вернуть результат клиенту.

Диаграмма алгоритма

Связанные сущности

API

LayoutTopdownPanoramasController.DeleteLayoutTopdownPanorama — DELETE {layoutTopdownPanoramaId}