CardTaskHistoryManagerResolveGroupAsync - метод

Возвращает группу в истории заданий, вычисленную для заданных параметров. При необходимости группа будет создана. Также может быть создана родительская группа, если указан её тип, но в карточке она отсутствует.

Definition

Пространство имён: Tessa.Cards
Сборка: Tessa (в Tessa.dll) Версия: 4.0.4
C#
public ValueTask<CardTaskHistoryGroup> ResolveGroupAsync(
	Card card,
	ListStorage<CardTaskHistoryGroup> groupsToAdd,
	IReadOnlyCollection<CardTaskHistoryGroup> allGroups,
	IValidationResultBuilder validationResult,
	Guid groupTypeID,
	Guid? parentGroupTypeID = null,
	bool newIteration = false,
	Object? placeholderContext = null,
	bool cardHasNoSections = false,
	bool noCardInDb = false,
	CancellationToken cancellationToken = default
)

Параметры

card  Card
Карточка, для истории заданий в которой создаётся группа. В карточке достаточно наличие идентификатора, а секции требуются только при указании параметра cardHasNoSections, равного false. В этот объект карточки будут добавлены группы истории заданий.
groupsToAdd  ListStorageCardTaskHistoryGroup

Список групп, в которые будет произведено добавление строки с группой для карточки card. Также по этому списку будет определено, требуется ли создать группу или использовать существующую, в дополнение к списку allGroups.

Обычно в этом параметре указывается card.TaskHistoryGroups, если карточка card будет сохранена с новыми группами. Возможны сценарии, когда карточка card используется как загруженная карточка для плейсхолдеров, а карточка для сохранения содержится в отдельном объекте, от которого требуется указать свойство card.TaskHistoryGroups в этом параметре.

allGroups  IReadOnlyCollectionCardTaskHistoryGroup

Полный список групп в истории заданий для карточки card. По этому списку будет определено, требуется ли создать группу или использовать существующую, но в случае создания группа будет добавлена не в эту коллекцию, а в коллекцию groupsToAdd. Первичный поиск будет выполнен по коллекции groupsToAdd, чтобы учитывать добавленные группы.

В следующем сценарии вы можете передать значение свойства card.TaskHistoryGroups в этот параметр: карточка полностью загружается, для неё добавляются строки в историю заданий, а потом для неё же вызывается метод card.RemoveAllButChanged() и выполняется сохранение.

validationResult  IValidationResultBuilder
Результат валидации, содержащий информацию по проблемам, возникшим при вычислении названия группы Caption (при замене плейсхолдеров). Вычисление названия группы выполняется при добавлении группы, а также при добавлении родительской группы.
groupTypeID  Guid
Идентификатор типа группы, которую требуется найти или добавить. Информация по уже существующим группам определяется из карточки card.
parentGroupTypeID  NullableGuid  (Optional)

Идентификатор типа родительской группы.

Если родительская группа указана, то будет выбрана родительская группа заданного типа с наибольшей итерацией.

Если родительская группа отсутствует, то она будет создана.

newIteration  Boolean  (Optional)

Признак того, что метод всегда добавляет итерацию для группы типа groupTypeID.

Если указано true, то метод создаёт новый экземпляр группы как при её существовании (тогда увеличивается номер итерации), так и при её отсутствии (тогда указывается итерация номер 1).

Если указано false, то метод возвращает экземпляр группы без его создания, если группа заданного типа была найдена (возвращается группа с наибольшей итерацией); если же группа не найдена, то также создаётся экземпляр группы с итерацией номер 1.

placeholderContext  Object  (Optional)
Объект внешнего контекста, передаваемый в плейсхолдеры при формировании названия экземпляра группы (в т.ч. родительской группы). Название формируется только при добавлении соответствующей группы. Если задано null, то в контекст плейсхолдеров не передаётся такой контекст.
cardHasNoSections  Boolean  (Optional)
Признак того, что карточка card не содержит секций для плейсхолдеров, поэтому плейсхолдеры, использующие строковые и коллекционные секции карточки, будут запрашивать их из базы данных по идентификатору карточки. Если также указан параметр noCardInDb, равный true, то такие плейсхолдеры не будут возвращать данных.
noCardInDb  Boolean  (Optional)
Признак того, что карточка card по соответствующему идентификатору отсутствует в базе данных (например, карточка ещё не создана или карточка является виртуальной), поэтому при замене плейсхолдеров не будут генерироваться SQL-запросы (не будет возможности выполнять объединение с данными других таблиц).
cancellationToken  CancellationToken  (Optional)
Объект, посредством которого можно отменить асинхронную задачу.

Возвращаемое значение

ValueTaskCardTaskHistoryGroup
Созданная или найденная строка с информацией по группе в истории заданий, которая соответствует переданным параметрами, или null, если не удалось создать группу (например, ошибки в плейсхолдерах в карточке типа группы). Возникшие ошибки и предупреждения будут содержаться в объекте validationResult.

Реализации

ICardTaskHistoryManagerResolveGroupAsync(Card, ListStorageCardTaskHistoryGroup, IReadOnlyCollectionCardTaskHistoryGroup, IValidationResultBuilder, Guid, NullableGuid, Boolean, Object, Boolean, Boolean, CancellationToken)

См. также