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

AddPanoramaShootingPointCommand

Назначение

Добавление новой точки съёмки панорамы на планировке. Точка привязывается к планировке и имеет координаты, угол и тип (планировка или объект).

Цель

Создать запись точки съёмки в БД для последующей загрузки файлов панорам по пресетам.

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

ПолеТипОбязательностьОписание
PropertyLayoutIdlongОбязательноеИдентификатор планировки
NamestringОбязательноеНазвание точки
Point(X, Y)ОбязательноеКоординаты на плане
AngledoubleОбязательноеУгол поворота камеры
PointTypePanoramaShootingPointTypeОбязательноеТип точки: LayoutPoint или PropertyPoint
примечание

TenantId берётся из контекста запроса (путь или авторизация).

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

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

Валидация

  • Планировка с PropertyLayoutId должна существовать в таблице ChessboardProjectPropertyLayoutEntity. Получить сущность по Id из БД; если не найдена — вернуть ошибку.

Ограничения

  • Одна точка не может дублировать другую по планировке и координатам (при наличии бизнес-правил уникальности).

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

  1. Провалидировать зависимости: получить сущность ChessboardProjectPropertyLayoutEntity по PropertyLayoutId из БД. Если не найдена — вернуть ошибку «Планировка не найдена».
  2. Создать сущность PanoramaShootingPointEntity в таблице PanoramaShootingPointEntity, заполнив поля: Id (новый Guid), TenantId (из контекста), PropertyLayoutId, Name, Point, Angle, PointType, Version, RowVersion, UpdatedAt, CreatedAt.
  3. Сохранить в БД.
  4. Сформировать объект результата с PointId = Id созданной сущности.
  5. Вернуть результат клиенту.

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

События

При необходимости после создания точки может публиковаться уведомление для инвалидации кэша или интеграций. Конкретные события зависят от реализации.

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

API

PanoramaPointsController.AddPanoramaShootingPoint — POST api/{tenantId}/chessboard/panoramas/panorama-points