Автоматизированный выбор хранилища для сохраняемого файла
Автоматизированный выбор хранилища для сохраняемого файла¶
Пусть все файлы с расширением “.docx”, прикладываемые к карточкам договоров (тип карточки Contract
), требуется сохранить в хранилище файлов с ID = 5
, если в карточке указано подразделение "Sample department"
. Такого рода правила настраиваются серверными расширениями CardRequestExtension
с типом CardRequestTypes.GetFileSource
.
using System;
using Tessa.Cards;
using Tessa.Cards.Extensions;
namespace Tessa.Extensions.Server.Cards
{
public sealed class SampleFileSourceRequestExtension : CardRequestExtension
{
public override void AfterRequest(ICardRequestExtensionContext context)
{
if (!context.RequestIsSuccessful)
{
return;
}
Card card = context.Request.GetCard();
CardFile file = context.Request.GetFile();
if (file.Name.EndsWith(".docx", StringComparison.OrdinalIgnoreCase)
&& card.DynamicEntries.DocumentCommonInfo.DepartmentName == "Sample department")
{
context.Response.SetFileSource(new CardFileSourceType(5));
}
}
}
}
Регистрация расширения выполняется следующим образом с указанием типа запроса CardRequestTypes.GetFileSource
и типа карточки Contract
.
extensionContainer
.RegisterExtension<ICardRequestExtension, SampleFileSourceRequestExtension>(x => x
.WithOrder(ExtensionStage.AfterPlatform, 1)
.WithSingleton()
.WhenRequestTypes(CardRequestTypes.GetFileSource)
.WhenCardTypes("Contract"))
;