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

UploadPropertyObjectPanoramaImageCommand

Назначение

Загрузка изображения панорамы (кубмап) для точки съёмки на объекте недвижимости по заданному пресету. Создаётся или обновляется запись PropertyObjectPanoramaPointFileEntity.

Цель

Сохранить привязку загруженных файлов граней кубмапа к точке, объекту и пресету.

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

ПолеТипОбязательностьОписание
PointIdGuidОбязательноеИдентификатор точки съёмки
PropertyObjectIdGuidОбязательноеИдентификатор объекта недвижимости
PresetIdGuidОбязательноеИдентификатор пресета
ImageFileIdsCubemapFileIds или аналогОбязательноеИдентификаторы файлов граней кубмапа
примечание

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

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

ПолеТипОбязательностьОписание
FileIdGuidОбязательноеИдентификатор записи PropertyObjectPanoramaPointFileEntity

Валидация

  • Точка съёмки с PointId должна существовать в PanoramaShootingPointEntity. Если не найдена — вернуть ошибку.
  • Объект с PropertyObjectId должен существовать в ChessboardProjectPropertyObjectEntity. Если не найден — вернуть ошибку.
  • Точка должна быть привязана к той же планировке, что и объект (PropertyLayoutId).

Ограничения

  • Одна комбинация (PointId, PropertyObjectId, PresetId) может иметь одну запись файла (создание или обновление при повторной загрузке).

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

  1. Провалидировать зависимости: получить PanoramaShootingPointEntity по PointId и ChessboardProjectPropertyObjectEntity по PropertyObjectId. Если любая не найдена — вернуть соответствующую ошибку.
  2. Проверить, что точка принадлежит планировке объекта (PropertyLayoutId совпадает). Если нет — вернуть ошибку.
  3. Найти существующую запись PropertyObjectPanoramaPointFileEntity по PointId, PropertyObjectId, PresetId. Если найдена — обновить Image. Если не найдена — создать новую запись с PointId, PropertyObjectId, PresetId, PropertyLayoutId (из объекта), Image.
  4. Сохранить в БД. Сформировать результат (FileId). Вернуть результат клиенту.

События

Могут публиковаться уведомления о загрузке файлов (AfterFileUploaded). См. FileUpload Saga.

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

API

PanoramaPointsController.UploadPropertyObjectPanoramaImage — POST points/{pointId}/property-objects/{propertyObjectId}/presets/{presetId}/upload-image