GetPanoramaShootingPointsListQuery
Назначение
Получение списка точек съёмки панорам по планировке без файлов. Используется для отображения точек на плане и выбора точки для загрузки изображений.
Цель
Вернуть клиенту перечень точек с идентификатором, названием, координатами, углом и типом точки.
Query: GetPanoramaShootingPointsListQuery (Входные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| ChessboardPropertyLayoutId | long | Обязательное | Идентификатор планировки |
примечание
TenantId берётся из контекста запроса.
Result: GetPanoramaShootingPointsListQueryResult (Выходные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| Entries | IReadOnlyCollection<PanoramaPointListEntry> | Обязательное | Список точек |
PanoramaPointListEntry (ResultEntry)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| PointId | Guid | Обязательное | Идентификатор точки |
| Name | string | Обязательное | Название |
| PointX | double | Обязательное | Координата X |
| PointY | double | Обязательное | Координата Y |
| Angle | double | Обязательное | Угол поворота |
| PointType | PanoramaShootingPointType | Обязательное | Тип точки |
Валидация
- Планировка с ChessboardPropertyLayoutId должна существовать. При необходимости проверить наличие; при отсутствии — вернуть пустой список или ошибку по правилам системы.
Бизнес-логика (Handler)
- Получить сущность ChessboardProjectPropertyLayoutEntity по ChessboardPropertyLayoutId из БД. Если не найдена — вернуть ошибку «Планировка не найдена» или пустой список (по правилам).
- Найти сущности PanoramaShootingPointEntity из таблицы PanoramaShootingPointEntity по PropertyLayoutId = ChessboardPropertyLayoutId (и TenantId из контекста).
- Сформировать объект результата: для каждой точки создать PanoramaPointListEntry (PointId, Name, PointX, PointY, Angle, PointType).
- Вернуть результат клиенту.
Диаграмма алгоритма
Связанные сущности
API
PanoramaPointsController.GetPanoramaShootingPointsList — GET layouts/{chessboardPropertyLayoutId}/points