DeleteLayoutTopdownPanoramaCommand (Admin)
Назначение
Удаление записи вида сверху над планировкой (LayoutTopdownPanoramaEntity) по идентификатору и всех связанных с ней кадров (LayoutTopdownPanoramaFrameEntity). Используется в Admin API для очистки данных о виде сверху.
Цель
Позволить администратору удалить вид сверху и его кадры одним вызовом, обеспечивая целостность данных (каскадное удаление кадров по FK или явное удаление в рамках команды).
Command: DeleteLayoutTopdownPanoramaCommand (Входные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| LayoutTopdownPanoramaId | Guid | Обязательное | Идентификатор записи вида сверху (Id из LayoutTopdownPanoramaEntity) |
примечание
TenantId берётся из контекста запроса.
Result: DeleteLayoutTopdownPanoramaCommandResult (Выходные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| Success | bool | Обязательное | Признак успешного выполнения |
При ошибке возвращается результат с ошибкой (FluentResult); при успехе — Success = true.
Валидация
- Запись LayoutTopdownPanoramaEntity с указанным LayoutTopdownPanoramaId и TenantId должна существовать. При отсутствии — вернуть ошибку «Вид сверху не найден».
- Перед удалением проверять принадлежность записи тенанту (TenantId).
Ограничения
- Удаляются только записи, принадлежащие текущему тенанту.
- Связанные LayoutTopdownPanoramaFrameEntity удаляются в рамках той же транзакции (каскад по FK или явное удаление в handler).
Бизнес-логика (Handler)
- Получить сущность LayoutTopdownPanoramaEntity по LayoutTopdownPanoramaId и TenantId. Если не найдена — вернуть ошибку «Вид сверху не найден».
- Удалить все сущности LayoutTopdownPanoramaFrameEntity по LayoutTopdownPanoramaId (связь по FK). Порядок: сначала кадры, затем запись вида сверху — либо каскадное удаление по правилам БД.
- Удалить сущность LayoutTopdownPanoramaEntity.
- Сохранить изменения. Сформировать DeleteLayoutTopdownPanoramaCommandResult (Success = true).
- Вернуть результат клиенту.
Диаграмма алгоритма
Связанные сущности
API
LayoutTopdownPanoramasController.DeleteLayoutTopdownPanorama — DELETE {layoutTopdownPanoramaId}