GetPropertyObjectPanoramaPointsWithFilesQuery
Назначение
Получение точек съёмки панорам по объекту недвижимости с привязкой файлов по пресету. Объединяет данные о точках и файлах панорам для объекта в одном ответе.
Цель
Вернуть клиенту список точек объекта с данными о файлах панорам (кубмап) по заданному пресету для отображения на плане и в просмотрщике.
Query: GetPropertyObjectPanoramaPointsWithFilesQuery (Входные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| ChessboardPropertyObjectId | Guid | Обязательное | Идентификатор объекта недвижимости |
| PresetId | Guid | Обязательное | Идентификатор пресета |
примечание
TenantId берётся из контекста запроса.
Result: GetPropertyObjectPanoramaPointsWithFilesQueryResult (Выходные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| Entries | IReadOnlyCollection<PanoramaPointWithFilesEntry> | Обязательное | Список точек с файлами |
PanoramaPointWithFilesEntry (ResultEntry)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| PointId | Guid | Обязательное | Идентификатор точки |
| Name | string | Обязательное | Название точки |
| PointX | double | Обязательное | Координата X |
| PointY | double | Обязательное | Координата Y |
| Angle | double | Обязательное | Угол |
| PointType | PanoramaShootingPointType | Обязательное | Тип точки |
| ImageFileIds | CubemapFileIds или null | Nullable | Идентификаторы файлов граней кубмапа по пресету (если есть) |
Валидация
- Объект с ChessboardPropertyObjectId должен существовать. При отсутствии — вернуть пустой список или ошибку.
Бизнес-логика (Handler)
- Получить сущность ChessboardProjectPropertyObjectEntity по ChessboardPropertyObjectId. Если не найдена — вернуть ошибку или пустой список.
- Получить идентификатор планировки (PropertyLayoutId) объекта. Найти точки PanoramaShootingPointEntity, относящиеся к объекту (по планировке и типу PropertyPoint или по дополнительному условию привязки к объекту).
- Получить записи PropertyObjectPanoramaPointFileEntity по PropertyObjectId и PresetId. Сопоставить по PointId с точками.
- Сформировать PanoramaPointWithFilesEntry для каждой точки: данные точки + ImageFileIds из соответствующей записи файла (если есть).
- Вернуть результат клиенту.
Связанные сущности
- ChessboardProjectPropertyObjectEntity
- PanoramaShootingPointEntity
- PropertyObjectPanoramaPointFileEntity
- PanoramaShootingPointType
API
PanoramaPointsController.GetPropertyObjectPanoramaPointsWithFiles — GET property-objects/{chessboardPropertyObjectId}/presets/{presetId}/points-with-files