Выпуск сертификата УЦ Контур
Выпуск сертификата УЦ Контур осуществляется с помощью методов, определённых в сервисе
DocsVision.Kontur.DssService.ObjectModel.Services.IKonturIssuesService
.
При создании заявки на выпуск сертификата из УЦ Контур телефон необходимо передавать из поля MobilePhone карточки сотрудника. Заполнение поля Мобильный телефон в карточке сотрудника является обязательным для выпуска сертификата УЦ Контур.
|
Указанный сервис не добавляется в контекст объектов или DI автоматически, требуемые сервисы необходимо проинициализировать самостоятельно. Чтобы упростить процедуру регистрации сервисов API УЦ Контур, добавьте в проект следующий вспомогательный класс, с помощью которого можно проинициализировать необходимые сервисы для стандартного контекста объектов Docsvision:
internal static class ObjectContextEnrichment
{
public static ObjectContext EnrichServices(this ObjectContext context)
{
if (context is null)
throw new ArgumentNullException(nameof(context));
AddService(context, GetKonturOperationsLogger());
AddService(context, GetKonturServiceSettings(context));
AddService(context, GetKonturKcrService(context));
AddService(context, GetKonturIssuesService(context));
return context;
}
private static IKonturIssuesService GetKonturIssuesService(this ObjectContext context)
{
var logger = context.GetService<IKonturOperationsLogger>();
var kcrService = context.GetService<IKonturKcrService>();
return new KonturIssuesServiceImpl(context, kcrService, logger);
}
private static IKonturKcrService GetKonturKcrService(ObjectContext context)
{
var settingService = context.GetService<IKonturServiceSettings>();
var logger = context.GetService<IKonturOperationsLogger>();
return new KonturKcrServiceImpl(settingService, logger);
}
private static IKonturServiceSettings GetKonturServiceSettings(ObjectContext context)
{
return new KonturServiceSettingsUniversalStorageImpl(context);
}
private static IKonturOperationsLogger GetKonturOperationsLogger()
{
return new KonturOperationsLoggerMock();
}
private static void AddService<TService>(IServiceContainer container, TService serviceImpl)
{
container.AddService(typeof(TService), serviceImpl);
}
}
internal class KonturOperationsDiagnosticsTraceLogger : IKonturOperationsLogger
{
public void Debug(string message)
{
System.Diagnostics.Trace.WriteLine("[Debug] " + message);
}
public void Error(string message)
{
System.Diagnostics.Trace.WriteLine("[Error] " + message);
}
public void Info(string message)
{
System.Diagnostics.Trace.WriteLine("[Info] " + message);
}
public void Trace(string message)
{
System.Diagnostics.Trace.WriteLine("[Trace] " + message);
}
public void Warn(string message)
{
System.Diagnostics.Trace.WriteLine("[Warn] " + message);
}
}
KonturOperationsDiagnosticsTraceLogger
реализует простой способ логирования в канал System.Diagnostics.Trace
. При необходимости реализуйте собственный способ логирования.
Используйте вспомогательный метод EnrichServices
для добавления сервисов УЦ Контур в существующий контекст объектов:
var context = CreateObjectContext();
context.EnrichServices();
Приведённая выше стандартная реализация инициализации сервисов предполагает, что
конфигурация работы с УЦ Контур хранить в Конструкторе справочников в стандартной секции
настроек УЦ Контур (требуется установка модуля УЦ Контур). Для получения такой конфигурации
используется реализация сервиса
DocsVision.Kontur.DssService.ObjectModel.Services.KonturServiceSettingsUniversalStorageImpl
.
Если требуется хранить конфигурацию в нестандартном хранилище, возможно собственная
реализация сервиса DocsVision.Kontur.DssService.Interfaces.IKonturServiceSettings
.