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

GetInteriorPresetsListByProjectIdQuery (Editor)

Назначение

Получение списка пресетов отделки (готовых наборов ремонта и отделки) по идентификатору проекта шахматной доски. Данные читаются из таблицы InteriorPresetEntity.

Цель

Вернуть клиенту Editor API перечень пресетов с Id, Name и связью с проектом для выбора пресета в UI.

Query: GetInteriorPresetsListByProjectIdQuery (Входные данные)

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

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

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

ПолеТипОбязательностьОписание
EntriesIReadOnlyCollection<GetInteriorPresetsListByProjectIdQueryResultEntry>ОбязательноеСписок пресетов

GetInteriorPresetsListByProjectIdQueryResultEntry (ResultEntry)

Коллекция содержит только идентификатор пресета и название (для выбора пресета в UI).

ПолеТипОбязательностьОписание
PresetIdGuidОбязательноеИдентификатор пресета (Id из InteriorPresetEntity)
NamestringОбязательноеНазвание пресета

Валидация

Проект с ChessboardProjectId должен существовать в ChessboardProjectEntity. Если не найден — вернуть ошибку «Проект не найден» или пустой список по правилам системы.

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

  1. Получить сущность ChessboardProjectEntity по ChessboardProjectId (и TenantId из контекста). Если не найдена — вернуть ошибку или пустой список.
  2. Найти сущности InteriorPresetEntity из таблицы InteriorPresetEntity по ChessboardProjectId и TenantId.
  3. Сформировать для каждой записи GetInteriorPresetsListByProjectIdQueryResultEntry (PresetId = Id, Name).
  4. Вернуть результат с Entries.

Постановка задачи

Добавить в Talent.Chessboard.Panoramas.Editor.Domain фичу InteriorPresets: GetInteriorPresetsListByProjectIdQuery, GetInteriorPresetsListByProjectIdQueryResult, GetInteriorPresetsListByProjectIdQueryResultEntry, GetInteriorPresetsListByProjectIdQueryHandler. Handler использует репозиторий InteriorPresetEntity (или DbContext). Таблица InteriorPresetEntity должна быть создана и зарегистрирована в DbContext (см. InteriorPresetEntity).

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

API

InteriorPresetsController.GetInteriorPresetsListByProjectId