Add mocked broker client

This commit is contained in:
2025-10-09 19:12:30 +09:00
parent bb91136d42
commit 209cd79f01
32 changed files with 809 additions and 225 deletions

View File

@ -4,58 +4,31 @@ using Hcs.Service.Async.Bills;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/BillsServiceAsync/
public class BillsApi(Client client) : ApiBase(client)
/// <inheritdoc cref="IBillsApi"/>
public class BillsApi(Client client) : ApiBase(client), IBillsApi
{
/// <summary>
/// Экспорт платежных документов
/// </summary>
/// <param name="paymentDocumentID">Идентификатор платежного документа</param>
/// <param name="token">Токен отмены</param>
/// <returns>Платежные документы</returns>
/// <inheritdoc cref="IBillsApi"/>
public async Task<IEnumerable<exportPaymentDocumentResultType>> ExportPaymentDocumentDataByPaymentDocumentIDAsync(string paymentDocumentID, CancellationToken token = default)
{
var request = new ExportPaymentDocumentDataRequest(client);
return await request.ExecuteByPaymentDocumentIDAsync(paymentDocumentID, token);
}
/// <summary>
/// Экспорт платежных документов
/// </summary>
/// <param name="year">Год</param>
/// <param name="month">Месяц</param>
/// <param name="fiasHouseGuid">Глобальный уникальный идентификатор дома по ФИАС</param>
/// <param name="accountNumber">Номер лицевого счета/иной идентификатор плательщика</param>
/// <param name="token">Токен отмены</param>
/// <returns>Платежные документы</returns>
/// <inheritdoc cref="IBillsApi"/>
public async Task<IEnumerable<exportPaymentDocumentResultType>> ExportPaymentDocumentDataByAccountNumberAsync(short year, int month, string fiasHouseGuid, string accountNumber, CancellationToken token = default)
{
var request = new ExportPaymentDocumentDataRequest(client);
return await request.ExecuteByAccountNumberAsync(year, month, fiasHouseGuid, accountNumber, token);
}
/// <summary>
/// Экспорт платежных документов
/// </summary>
/// <param name="year">Год</param>
/// <param name="month">Месяц</param>
/// <param name="fiasHouseGuid">Глобальный уникальный идентификатор дома по ФИАС</param>
/// <param name="paymentDocumentNumber">Номер платежного документа, по которому внесена плата,
/// присвоенный такому документу исполнителем в целях осуществления расчетов по внесению платы</param>
/// <param name="token">Токен отмены</param>
/// <returns>Платежные документы</returns>
/// <inheritdoc cref="IBillsApi"/>
public async Task<IEnumerable<exportPaymentDocumentResultType>> ExportPaymentDocumentDataByPaymentDocumentNumberAsync(short year, int month, string fiasHouseGuid, string paymentDocumentNumber, CancellationToken token = default)
{
var request = new ExportPaymentDocumentDataRequest(client);
return await request.ExecuteByPaymentDocumentNumberAsync(year, month, fiasHouseGuid, paymentDocumentNumber, token);
}
/// <summary>
/// Импорт сведений о платежных документах
/// </summary>
/// <param name="payload">Пейлоад сведений о платежных документах</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
/// <inheritdoc cref="IBillsApi"/>
public async Task<bool> ImportPaymentDocumentDataAsync(ImportPaymentDocumentDataPayload payload, CancellationToken token = default)
{
var request = new ImportPaymentDocumentDataRequest(client);

View File

@ -4,27 +4,17 @@ using Hcs.Service.Async.DeviceMetering;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/DeviceMeteringServiceAsync/
public class DeviceMeteringApi(Client client) : ApiBase(client)
/// <inheritdoc cref="IDeviceMeteringApi"/>
public class DeviceMeteringApi(Client client) : ApiBase(client), IDeviceMeteringApi
{
/// <summary>
/// Экспорт истории показаний и поверок приборов учета пользователя, установленных в указанном доме
/// </summary>
/// <param name="payload">Пейлоад выборки ПУ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Лицевые счета</returns>
/// <inheritdoc cref="IDeviceMeteringApi"/>
public async Task<IEnumerable<exportMeteringDeviceHistoryResultType>> ExportMeteringDeviceHistoryAsync(ExportMeteringDeviceHistoryPayload payload, CancellationToken token = default)
{
var request = new ExportMeteringDeviceHistoryRequest(client);
return await request.ExecuteAsync(payload, token);
}
/// <summary>
/// Импорт показаний приборов учета
/// </summary>
/// <param name="values">Показания прибора учета</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
/// <inheritdoc cref="IDeviceMeteringApi"/>
public async Task<bool> ImportMeteringDeviceValuesAsync(importMeteringDeviceValuesRequestMeteringDevicesValues values, CancellationToken token = default)
{
var request = new ImportMeteringDeviceValuesRequest(client);

View File

@ -4,158 +4,94 @@ using Hcs.Service.Async.HouseManagement;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/HouseManagementServiceAsync/
public class HouseManagementApi(Client client) : ApiBase(client)
/// <inheritdoc cref="IHouseManagementApi"/>
public class HouseManagementApi(Client client) : ApiBase(client), IHouseManagementApi
{
/// <summary>
/// Экспорт лицевых счетов
/// </summary>
/// <param name="fiasHouseGuid">Глобальный уникальный идентификатор дома по ФИАС</param>
/// <param name="token">Токен отмены</param>
/// <returns>Лицевые счета</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<IEnumerable<exportAccountResultType>> ExportAccountAsync(string fiasHouseGuid, CancellationToken token = default)
{
var request = new ExportAccountRequest(client);
return await request.ExecuteAsync(fiasHouseGuid, token);
}
/// <summary>
/// Возвращает информацию о доме
/// </summary>
/// <param name="fiasHouseGuid">Глобальный уникальный идентификатор дома по ФИАС</param>
/// <param name="token">Токен отмены</param>
/// <returns>Информация о доме</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<IEnumerable<exportHouseResultType>> ExportHouseAsync(string fiasHouseGuid, CancellationToken token = default)
{
var request = new ExportHouseRequest(client);
return await request.ExecuteAsync(fiasHouseGuid, token);
}
/// <summary>
/// Возвращает все договора ресурсоснабжения
/// </summary>
/// <param name="token">Токен отмены</param>
/// <returns>Договора ресурсоснабжения</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<IEnumerable<exportSupplyResourceContractResultType>> ExportSupplyResourceContractDataAsync(CancellationToken token = default)
{
var request = new ExportSupplyResourceContractDataRequest(client);
return await request.ExecuteAsync(token);
}
/// <summary>
/// Возвращает договор ресурсоснабжения по его идентификатору в ГИС ЖКХ
/// </summary>
/// <param name="contractRootGuid">Идентификатор договора ресурсоснабжения в ГИС ЖКХ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Договор ресурсоснабжения</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<exportSupplyResourceContractResultType> ExportSupplyResourceContractDataAsync(Guid contractRootGuid, CancellationToken token = default)
{
var request = new ExportSupplyResourceContractDataRequest(client);
return await request.ExecuteAsync(contractRootGuid, token);
}
/// <summary>
/// Возвращает договор ресурсоснабжения по номеру договора в ГИС ЖКХ
/// </summary>
/// <param name="contractNumber">Номер договора ресурсоснабжения в ГИС ЖКХ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Договор ресурсоснабжения</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<exportSupplyResourceContractResultType> ExportSupplyResourceContractDataAsync(string contractNumber, CancellationToken token = default)
{
var request = new ExportSupplyResourceContractDataRequest(client);
return await request.ExecuteAsync(contractNumber, token);
}
/// <summary>
/// Возвращает объекты жилищного фонда из договора ресурсоснабжения по его идентификатору
/// </summary>
/// <param name="contractRootGuid">Идентификатор договора ресурсоснабжения в ГИС ЖКХ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Объекты жилищного фонда</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<IEnumerable<exportSupplyResourceContractObjectAddressResultType>> ExportSupplyResourceContractObjectAddressDataAsync(Guid contractRootGuid, CancellationToken token = default)
{
var request = new ExportSupplyResourceContractObjectAddressDataRequest(client);
return await request.ExecuteAsync(contractRootGuid, token);
}
/// <summary>
/// Импорт лицевого счета
/// </summary>
/// <param name="payload">Пейлоад лицевого счета</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<bool> ImportAccountDataAsync(ImportAccountDataPayload payload, CancellationToken token = default)
{
var request = new ImportAccountDataRequest(client);
return await request.ExecuteAsync(payload, token);
}
/// <summary>
/// Импорт сведений о ДУ (создание ДУ)
/// </summary>
/// <param name="payload">Пейлоад ДУ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Импортированный договор</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<importContractResultType> ImportContractDataAsync(ImportContractDataPayload payload, CancellationToken token = default)
{
var request = new ImportContractDataRequest(client);
return await request.ExecuteAsync(payload, token);
}
/// <summary>
/// Импорт данных дома
/// </summary>
/// <param name="payload">Пейлоад данных дома</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<bool> ImportHouseUODataAsync(ImportLivingHouseUODataPayload payload, CancellationToken token = default)
{
var request = new ImportHouseUODataRequest(client);
return await request.ExecuteAsync(payload, token);
}
/// <summary>
/// Импорт прибора учета
/// </summary>
/// <param name="meteringDevice">Прибор учета</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<bool> ImportMeteringDeviceDataAsync(MeteringDeviceFullInformationType meteringDevice, CancellationToken token = default)
{
var request = new ImportMeteringDeviceDataRequest(client);
return await request.ExecuteAsync(meteringDevice, token);
}
/// <summary>
/// Импорт новости для информирования граждан
/// </summary>
/// <param name="payload">Пейлоад новости</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<bool> ImportNotificationDataAsync(ImportNotificationDataPayload payload, CancellationToken token = default)
{
var request = new ImportNotificationDataRequest(client);
return await request.ExecuteAsync(payload, token);
}
/// <summary>
/// Импорт договора ресурсоснабжения с РСО
/// </summary>
/// <param name="payload">Пейлоад договора ресурсоснабжения</param>
/// <param name="token">Токен отмены</param>
/// <returns>Импортированный договор</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<getStateResultImportResultCommonResultImportSupplyResourceContract> ImportSupplyResourceContractDataAsync(ImportSupplyResourceContractDataPayload payload, CancellationToken token = default)
{
var request = new ImportSupplyResourceContractDataRequest(client);
return await request.ExecuteAsync(payload, token);
}
/// <summary>
/// Импорт проекта договора ресурсоснабжения с РСО
/// </summary>
/// <param name="payload">Пейлоад проекта договора ресурсоснабжения</param>
/// <param name="token">Токен отмены</param>
/// <returns>Импортированный проект договора</returns>
/// <inheritdoc cref="IHouseManagementApi"/>
public async Task<getStateResultImportResultCommonResultImportSupplyResourceContractProject> ImportSupplyResourceContractProjectAsync(ImportSupplyResourceContractProjectPayload payload, CancellationToken token = default)
{
var request = new ImportSupplyResourceContractProjectRequest(client);

View File

@ -0,0 +1,48 @@
using Hcs.Broker.Api.Payload.Bills;
using Hcs.Service.Async.Bills;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/BillsServiceAsync/
public interface IBillsApi
{
/// <summary>
/// Экспорт платежных документов
/// </summary>
/// <param name="paymentDocumentID">Идентификатор платежного документа</param>
/// <param name="token">Токен отмены</param>
/// <returns>Платежные документы</returns>
Task<IEnumerable<exportPaymentDocumentResultType>> ExportPaymentDocumentDataByPaymentDocumentIDAsync(string paymentDocumentID, CancellationToken token = default);
/// <summary>
/// Экспорт платежных документов
/// </summary>
/// <param name="year">Год</param>
/// <param name="month">Месяц</param>
/// <param name="fiasHouseGuid">Глобальный уникальный идентификатор дома по ФИАС</param>
/// <param name="accountNumber">Номер лицевого счета/иной идентификатор плательщика</param>
/// <param name="token">Токен отмены</param>
/// <returns>Платежные документы</returns>
Task<IEnumerable<exportPaymentDocumentResultType>> ExportPaymentDocumentDataByAccountNumberAsync(short year, int month, string fiasHouseGuid, string accountNumber, CancellationToken token = default);
/// <summary>
/// Экспорт платежных документов
/// </summary>
/// <param name="year">Год</param>
/// <param name="month">Месяц</param>
/// <param name="fiasHouseGuid">Глобальный уникальный идентификатор дома по ФИАС</param>
/// <param name="paymentDocumentNumber">Номер платежного документа, по которому внесена плата,
/// присвоенный такому документу исполнителем в целях осуществления расчетов по внесению платы</param>
/// <param name="token">Токен отмены</param>
/// <returns>Платежные документы</returns>
Task<IEnumerable<exportPaymentDocumentResultType>> ExportPaymentDocumentDataByPaymentDocumentNumberAsync(short year, int month, string fiasHouseGuid, string paymentDocumentNumber, CancellationToken token = default);
/// <summary>
/// Импорт сведений о платежных документах
/// </summary>
/// <param name="payload">Пейлоад сведений о платежных документах</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
Task<bool> ImportPaymentDocumentDataAsync(ImportPaymentDocumentDataPayload payload, CancellationToken token = default);
}
}

View File

@ -0,0 +1,25 @@
using Hcs.Broker.Api.Payload.DeviceMetering;
using Hcs.Service.Async.DeviceMetering;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/DeviceMeteringServiceAsync/
public interface IDeviceMeteringApi
{
/// <summary>
/// Экспорт истории показаний и поверок приборов учета пользователя, установленных в указанном доме
/// </summary>
/// <param name="payload">Пейлоад выборки ПУ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Лицевые счета</returns>
Task<IEnumerable<exportMeteringDeviceHistoryResultType>> ExportMeteringDeviceHistoryAsync(ExportMeteringDeviceHistoryPayload payload, CancellationToken token = default);
/// <summary>
/// Импорт показаний приборов учета
/// </summary>
/// <param name="values">Показания прибора учета</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
Task<bool> ImportMeteringDeviceValuesAsync(importMeteringDeviceValuesRequestMeteringDevicesValues values, CancellationToken token = default);
}
}

View File

@ -0,0 +1,112 @@
using Hcs.Broker.Api.Payload.HouseManagement;
using Hcs.Service.Async.HouseManagement;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/HouseManagementServiceAsync/
public interface IHouseManagementApi
{
/// <summary>
/// Экспорт лицевых счетов
/// </summary>
/// <param name="fiasHouseGuid">Глобальный уникальный идентификатор дома по ФИАС</param>
/// <param name="token">Токен отмены</param>
/// <returns>Лицевые счета</returns>
Task<IEnumerable<exportAccountResultType>> ExportAccountAsync(string fiasHouseGuid, CancellationToken token = default);
/// <summary>
/// Возвращает информацию о доме
/// </summary>
/// <param name="fiasHouseGuid">Глобальный уникальный идентификатор дома по ФИАС</param>
/// <param name="token">Токен отмены</param>
/// <returns>Информация о доме</returns>
Task<IEnumerable<exportHouseResultType>> ExportHouseAsync(string fiasHouseGuid, CancellationToken token = default);
/// <summary>
/// Возвращает все договора ресурсоснабжения
/// </summary>
/// <param name="token">Токен отмены</param>
/// <returns>Договора ресурсоснабжения</returns>
Task<IEnumerable<exportSupplyResourceContractResultType>> ExportSupplyResourceContractDataAsync(CancellationToken token = default);
/// <summary>
/// Возвращает договор ресурсоснабжения по его идентификатору в ГИС ЖКХ
/// </summary>
/// <param name="contractRootGuid">Идентификатор договора ресурсоснабжения в ГИС ЖКХ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Договор ресурсоснабжения</returns>
Task<exportSupplyResourceContractResultType> ExportSupplyResourceContractDataAsync(Guid contractRootGuid, CancellationToken token = default);
/// <summary>
/// Возвращает договор ресурсоснабжения по номеру договора в ГИС ЖКХ
/// </summary>
/// <param name="contractNumber">Номер договора ресурсоснабжения в ГИС ЖКХ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Договор ресурсоснабжения</returns>
Task<exportSupplyResourceContractResultType> ExportSupplyResourceContractDataAsync(string contractNumber, CancellationToken token = default);
/// <summary>
/// Возвращает объекты жилищного фонда из договора ресурсоснабжения по его идентификатору
/// </summary>
/// <param name="contractRootGuid">Идентификатор договора ресурсоснабжения в ГИС ЖКХ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Объекты жилищного фонда</returns>
Task<IEnumerable<exportSupplyResourceContractObjectAddressResultType>> ExportSupplyResourceContractObjectAddressDataAsync(Guid contractRootGuid, CancellationToken token = default);
/// <summary>
/// Импорт лицевого счета
/// </summary>
/// <param name="payload">Пейлоад лицевого счета</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
Task<bool> ImportAccountDataAsync(ImportAccountDataPayload payload, CancellationToken token = default);
/// <summary>
/// Импорт сведений о ДУ (создание ДУ)
/// </summary>
/// <param name="payload">Пейлоад ДУ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Импортированный договор</returns>
Task<importContractResultType> ImportContractDataAsync(ImportContractDataPayload payload, CancellationToken token = default);
/// <summary>
/// Импорт данных дома
/// </summary>
/// <param name="payload">Пейлоад данных дома</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
Task<bool> ImportHouseUODataAsync(ImportLivingHouseUODataPayload payload, CancellationToken token = default);
/// <summary>
/// Импорт прибора учета
/// </summary>
/// <param name="meteringDevice">Прибор учета</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
Task<bool> ImportMeteringDeviceDataAsync(MeteringDeviceFullInformationType meteringDevice, CancellationToken token = default);
/// <summary>
/// Импорт новости для информирования граждан
/// </summary>
/// <param name="payload">Пейлоад новости</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
Task<bool> ImportNotificationDataAsync(ImportNotificationDataPayload payload, CancellationToken token = default);
/// <summary>
/// Импорт договора ресурсоснабжения с РСО
/// </summary>
/// <param name="payload">Пейлоад договора ресурсоснабжения</param>
/// <param name="token">Токен отмены</param>
/// <returns>Импортированный договор</returns>
Task<getStateResultImportResultCommonResultImportSupplyResourceContract> ImportSupplyResourceContractDataAsync(ImportSupplyResourceContractDataPayload payload, CancellationToken token = default);
/// <summary>
/// Импорт проекта договора ресурсоснабжения с РСО
/// </summary>
/// <param name="payload">Пейлоад проекта договора ресурсоснабжения</param>
/// <param name="token">Токен отмены</param>
/// <returns>Импортированный проект договора</returns>
Task<getStateResultImportResultCommonResultImportSupplyResourceContractProject> ImportSupplyResourceContractProjectAsync(ImportSupplyResourceContractProjectPayload payload, CancellationToken token = default);
}
}

16
Hcs.Broker/Api/INsiApi.cs Normal file
View File

@ -0,0 +1,16 @@
using Hcs.Service.Async.Nsi;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/NsiService/
public interface INsiApi
{
/// <summary>
/// Возвращает данные справочника поставщика информации
/// </summary>
/// <param name="registryNumber">Реестровый номер справочника</param>
/// <param name="token">Токен отмены</param>
/// <returns>Данные справочника</returns>
Task<IEnumerable<NsiItemType>> ExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default);
}
}

View File

@ -0,0 +1,25 @@
using Hcs.Service.Async.NsiCommon;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/NsiCommonService/
public interface INsiCommonApi
{
/// <summary>
/// Возвращает данные общесистемного справочника
/// </summary>
/// <param name="registryNumber">Реестровый номер справочника</param>
/// <param name="listGroup">Группа справочников, где NSI - общесистемный, а NSIRAO - ОЖФ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Данные общесистемного справочника</returns>
Task<NsiItemType> ExportNsiItemAsync(int registryNumber, ListGroup listGroup, CancellationToken token = default);
/// <summary>
/// Возвращает перечень общесистемных справочников с указанием даты последнего изменения каждого из них
/// </summary>
/// <param name="listGroup">Группа справочников, где NSI - общесистемный, а NSIRAO - ОЖФ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Перечень общесистемных справочников</returns>
Task<NsiListType> ExportNsiListAsync(ListGroup listGroup, CancellationToken token = default);
}
}

View File

@ -0,0 +1,25 @@
using Hcs.Service.Async.OrgRegistryCommon;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/OrganizationsRegistryCommonAsyncService/
public interface IOrgRegistryCommonApi
{
/// <summary>
/// Экспорт сведений о поставщиках информации ИС
/// </summary>
/// <param name="isActual">Выгрузить только активных поставщиков данных</param>
/// <param name="token">Токен отмены</param>
/// <returns>Сведения о поставщиках данных</returns>
Task<IEnumerable<exportDataProviderResultType>> ExportDataProviderAsync(bool isActual, CancellationToken token = default);
/// <summary>
/// Экспорт сведений из реестра организаций
/// </summary>
/// <param name="ogrn">ОГРН</param>
/// <param name="kpp">КПП</param>
/// <param name="token">Токен отмены</param>
/// <returns>Сведения из реестра организаций</returns>
Task<IEnumerable<exportOrgRegistryResultType>> ExportOrgRegistryAsync(string ogrn, string kpp, CancellationToken token = default);
}
}

View File

@ -0,0 +1,24 @@
using Hcs.Broker.Api.Payload.Payments;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/PaymentsServiceAsync/
public interface IPaymentsApi
{
/// <summary>
/// ВИ_ОПЛАТАЗВ. Передать перечень документов "Извещение о принятии к исполнению распоряжения".
/// </summary>
/// <param name="payload">Пейлоад документа</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
Task<bool> ImportNotificationsOfOrderExecutionAsync(ImportNotificationsOfOrderExecutionPayload payload, CancellationToken token = default);
/// <summary>
/// Импорт пакета документов "Извещение о принятии к исполнению распоряжения", размещаемых исполнителем
/// </summary>
/// <param name="payload">Пейлоад документа</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
Task<bool> ImportSupplierNotificationsOfOrderExecutionAsync(ImportSupplierNotificationsOfOrderExecutionPayload payload, CancellationToken token = default);
}
}

View File

@ -4,15 +4,10 @@ using Hcs.Service.Async.Nsi;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/NsiService/
public class NsiApi(Client client) : ApiBase(client)
/// <inheritdoc cref="INsiApi"/>
public class NsiApi(Client client) : ApiBase(client), INsiApi
{
/// <summary>
/// Возвращает данные справочника поставщика информации
/// </summary>
/// <param name="registryNumber">Реестровый номер справочника</param>
/// <param name="token">Токен отмены</param>
/// <returns>Данные справочника</returns>
/// <inheritdoc cref="INsiApi"/>
public async Task<IEnumerable<NsiItemType>> ExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default)
{
try

View File

@ -4,16 +4,10 @@ using Hcs.Service.Async.NsiCommon;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/NsiCommonService/
public class NsiCommonApi(Client client) : ApiBase(client)
/// <inheritdoc cref="INsiCommonApi"/>
public class NsiCommonApi(Client client) : ApiBase(client), INsiCommonApi
{
/// <summary>
/// Возвращает данные общесистемного справочника
/// </summary>
/// <param name="registryNumber">Реестровый номер справочника</param>
/// <param name="listGroup">Группа справочников, где NSI - общесистемный, а NSIRAO - ОЖФ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Данные общесистемного справочника</returns>
/// <inheritdoc cref="INsiCommonApi"/>
public async Task<NsiItemType> ExportNsiItemAsync(int registryNumber, ListGroup listGroup, CancellationToken token = default)
{
try
@ -27,12 +21,7 @@ namespace Hcs.Broker.Api
}
}
/// <summary>
/// Возвращает перечень общесистемных справочников с указанием даты последнего изменения каждого из них
/// </summary>
/// <param name="listGroup">Группа справочников, где NSI - общесистемный, а NSIRAO - ОЖФ</param>
/// <param name="token">Токен отмены</param>
/// <returns>Перечень общесистемных справочников</returns>
/// <inheritdoc cref="INsiCommonApi"/>
public async Task<NsiListType> ExportNsiListAsync(ListGroup listGroup, CancellationToken token = default)
{
try

View File

@ -4,15 +4,10 @@ using Hcs.Service.Async.OrgRegistryCommon;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/OrganizationsRegistryCommonAsyncService/
public class OrgRegistryCommonApi(Client client) : ApiBase(client)
/// <inheritdoc cref="IOrgRegistryCommonApi"/>
public class OrgRegistryCommonApi(Client client) : ApiBase(client), IOrgRegistryCommonApi
{
/// <summary>
/// Экспорт сведений о поставщиках информации ИС
/// </summary>
/// <param name="isActual">Выгрузить только активных поставщиков данных</param>
/// <param name="token">Токен отмены</param>
/// <returns>Сведения о поставщиках данных</returns>
/// <inheritdoc cref="IOrgRegistryCommonApi"/>
public async Task<IEnumerable<exportDataProviderResultType>> ExportDataProviderAsync(bool isActual, CancellationToken token = default)
{
try
@ -26,13 +21,7 @@ namespace Hcs.Broker.Api
}
}
/// <summary>
/// Экспорт сведений из реестра организаций
/// </summary>
/// <param name="ogrn">ОГРН</param>
/// <param name="kpp">КПП</param>
/// <param name="token">Токен отмены</param>
/// <returns>Сведения из реестра организаций</returns>
/// <inheritdoc cref="IOrgRegistryCommonApi"/>
public async Task<IEnumerable<exportOrgRegistryResultType>> ExportOrgRegistryAsync(string ogrn, string kpp, CancellationToken token = default)
{
try

View File

@ -3,27 +3,17 @@ using Hcs.Broker.Api.Request.Payments;
namespace Hcs.Broker.Api
{
// http://open-gkh.ru/PaymentsServiceAsync/
public class PaymentsApi(Client client) : ApiBase(client)
/// <inheritdoc cref="IPaymentsApi"/>
public class PaymentsApi(Client client) : ApiBase(client), IPaymentsApi
{
/// <summary>
/// ВИ_ОПЛАТАЗВ. Передать перечень документов "Извещение о принятии к исполнению распоряжения".
/// </summary>
/// <param name="payload">Пейлоад документа</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
/// <inheritdoc cref="IPaymentsApi"/>
public async Task<bool> ImportNotificationsOfOrderExecutionAsync(ImportNotificationsOfOrderExecutionPayload payload, CancellationToken token = default)
{
var request = new ImportNotificationsOfOrderExecutionRequest(client);
return await request.ExecuteAsync(payload, token);
}
/// <summary>
/// Импорт пакета документов "Извещение о принятии к исполнению распоряжения", размещаемых исполнителем
/// </summary>
/// <param name="payload">Пейлоад документа</param>
/// <param name="token">Токен отмены</param>
/// <returns>true, если операция выполнена успешно, иначе - false</returns>
/// <inheritdoc cref="IPaymentsApi"/>
public async Task<bool> ImportSupplierNotificationsOfOrderExecutionAsync(ImportSupplierNotificationsOfOrderExecutionPayload payload, CancellationToken token = default)
{
var request = new ImportSupplierNotificationsOfOrderExecutionRequest(client);

View File

@ -8,60 +8,43 @@ using System.Security.Cryptography.X509Certificates;
namespace Hcs.Broker
{
/// <summary>
/// Клиент для вызова всех реализованных функций интеграции с ГИС ЖКХ
/// </summary>
public class Client
/// <inheritdoc cref="IClient"/>
public class Client : IClient
{
/// <summary>
/// Идентификатор поставщика данных ГИС ЖКХ
/// </summary>
/// <inheritdoc cref="IClient"/>
public string OrgPPAGUID { get; set; }
/// <summary>
/// Исполнитель/сотрудник ГИС ЖКХ, от которого будут регистрироваться ответы
/// </summary>
/// <inheritdoc cref="IClient"/>
public string ExecutorGUID { get; set; }
/// <summary>
/// Признак, указывающий на то, что используется ли внешний туннель (stunnel)
/// </summary>
/// <inheritdoc cref="IClient"/>
public bool UseTunnel { get; set; }
/// <summary>
/// Если true, то запросы будут выполняться на промышленном стенде, иначе - на тестовом
/// </summary>
/// <inheritdoc cref="IClient"/>
public bool IsPPAK { get; set; }
/// <summary>
/// Роль
/// </summary>
/// <inheritdoc cref="IClient"/>
public OrganizationRole Role { get; set; }
/// <summary>
/// Устанавливаемый пользователем приемник отладочных сообщений
/// </summary>
/// <inheritdoc cref="IClient"/>
public ILogger Logger { get; set; }
/// <summary>
/// Устанавливаемый пользователем механизм перехвата содержимого отправляемых
/// и принимаемых пакетов
/// </summary>
/// <inheritdoc cref="IClient"/>
public IMessageCapturer MessageCapturer { get; set; }
public BillsApi Bills => new(this);
public IBillsApi Bills => new BillsApi(this);
public DeviceMeteringApi DeviceMetering => new(this);
public IDeviceMeteringApi DeviceMetering => new DeviceMeteringApi(this);
public HouseManagementApi HouseManagement => new(this);
public IHouseManagementApi HouseManagement => new HouseManagementApi(this);
public NsiApi Nsi => new(this);
public INsiApi Nsi => new NsiApi(this);
public NsiCommonApi NsiCommon => new(this);
public INsiCommonApi NsiCommon => new NsiCommonApi(this);
public OrgRegistryCommonApi OrgRegistryCommon => new(this);
public IOrgRegistryCommonApi OrgRegistryCommon => new OrgRegistryCommonApi(this);
public PaymentsApi Payments => new(this);
public IPaymentsApi Payments => new PaymentsApi(this);
/// <summary>
/// Сертификат клиента для применения при формировании запросов

64
Hcs.Broker/IClient.cs Normal file
View File

@ -0,0 +1,64 @@
using Hcs.Broker.Api;
using Hcs.Broker.Logger;
using Hcs.Broker.MessageCapturer;
namespace Hcs.Broker
{
/// <summary>
/// Клиент для вызова всех реализованных функций интеграции с ГИС ЖКХ
/// </summary>
public interface IClient
{
/// <summary>
/// Идентификатор поставщика данных ГИС ЖКХ
/// </summary>
string OrgPPAGUID { get; set; }
/// <summary>
/// Исполнитель/сотрудник ГИС ЖКХ, от которого будут регистрироваться ответы
/// </summary>
string ExecutorGUID { get; set; }
/// <summary>
/// Признак, указывающий на то, что используется ли внешний туннель (stunnel)
/// </summary>
bool UseTunnel { get; set; }
/// <summary>
/// Если true, то запросы будут выполняться на промышленном стенде, иначе - на тестовом
/// </summary>
bool IsPPAK { get; set; }
/// <summary>
/// Роль
/// </summary>
OrganizationRole Role { get; set; }
/// <summary>
/// Устанавливаемый пользователем приемник отладочных сообщений
/// </summary>
ILogger Logger { get; set; }
/// <summary>
/// Устанавливаемый пользователем механизм перехвата содержимого отправляемых
/// и принимаемых пакетов
/// </summary>
IMessageCapturer MessageCapturer { get; set; }
IBillsApi Bills { get; }
IDeviceMeteringApi DeviceMetering { get; }
IHouseManagementApi HouseManagement { get; }
INsiApi Nsi { get; }
INsiCommonApi NsiCommon { get; }
IOrgRegistryCommonApi OrgRegistryCommon { get; }
IPaymentsApi Payments { get; }
void SetSigningCertificate(string serialNumber, string? pin = null);
}
}