Создание копии карточки на сервере
Создание копии карточки на сервере¶
Пусть по условию задачи требуется в пределах транзакции на сохранение карточки (например, при завершении задания или нажатии на кнопку) создать копию этой же карточки.
Следующий пример подразумевает код в расширении CardStoreExtension
, в методе BeforeCommitTransaction
:
// получаем через конструктор расширения:
// ICardTemplateManager cardTemplateManager
// ICardRepository cardRepositoryWithoutTransaction
var cardCopyRequest = new CardCopyRequest
{
SourceCardID = args.CardID,
SourceCardTypeID = args.CardTypeID,
SourceCardTypeName = args.CardTypeName
};
var cardCopyResponse = await cardTemplateManager.CopyAsync(cardCopyRequest);
if (!cardCopyResponse.ValidationResult.IsSuccessful())
{
return;
}
cardCopyResponse.Card.TryGetFiles()?.Clear();
var storeRequest = new CardStoreRequest { Card = cardCopyResponse.Card };
var storeResponse = await this.cardRepositoryWithoutTransaction.StoreAsync(storeRequest, context.CancellationToken);
context.ValidationResult.Add(storeResponse.ValidationResult);