GetInteriorPresetsListByProjectIdQuery (Editor)
Назначение
Получение списка пресетов отделки (готовых наборов ремонта и отделки) по идентификатору проекта шахматной доски. Данные читаются из таблицы InteriorPresetEntity.
Цель
Вернуть клиенту Editor API перечень пресетов с Id, Name и связью с проектом для выбора пресета в UI.
Query: GetInteriorPresetsListByProjectIdQuery (Входные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| ChessboardProjectId | long | Обязательное | Идентификатор проекта шахматной доски |
TenantId берётся из контекста запроса.
Result: GetInteriorPresetsListByProjectIdQueryResult (Выходные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| Entries | IReadOnlyCollection<GetInteriorPresetsListByProjectIdQueryResultEntry> | Обязательное | Список пресетов |
GetInteriorPresetsListByProjectIdQueryResultEntry (ResultEntry)
Коллекция содержит только идентификатор пресета и название (для выбора пресета в UI).
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| PresetId | Guid | Обязательное | Идентификатор пресета (Id из InteriorPresetEntity) |
| Name | string | Обязательное | Название пресета |
Валидация
Проект с ChessboardProjectId должен существовать в ChessboardProjectEntity. Если не найден — вернуть ошибку «Проект не найден» или пустой список по правилам системы.
Бизнес-логика (Handler)
- Получить сущность ChessboardProjectEntity по ChessboardProjectId (и TenantId из контекста). Если не найдена — вернуть ошибку или пустой список.
- Найти сущности InteriorPresetEntity из таблицы InteriorPresetEntity по ChessboardProjectId и TenantId.
- Сформировать для каждой записи GetInteriorPresetsListByProjectIdQueryResultEntry (PresetId = Id, Name).
- Вернуть результат с Entries.
Постановка задачи
Добавить в Talent.Chessboard.Panoramas.Editor.Domain фичу InteriorPresets: GetInteriorPresetsListByProjectIdQuery, GetInteriorPresetsListByProjectIdQueryResult, GetInteriorPresetsListByProjectIdQueryResultEntry, GetInteriorPresetsListByProjectIdQueryHandler. Handler использует репозиторий InteriorPresetEntity (или DbContext). Таблица InteriorPresetEntity должна быть создана и зарегистрирована в DbContext (см. InteriorPresetEntity).