diff --git a/Hcs.Client/Client/Api/HouseManagementApi.cs b/Hcs.Client/Client/Api/HouseManagementApi.cs index e9daacb..1176b43 100644 --- a/Hcs.Client/Client/Api/HouseManagementApi.cs +++ b/Hcs.Client/Client/Api/HouseManagementApi.cs @@ -11,9 +11,22 @@ namespace Hcs.Client.Api // http://open-gkh.ru/HouseManagementServiceAsync/ public class HouseManagementApi(ClientBase client) : ApiBase(client) { + /// + /// Экспорт лицевых счетов + /// + /// Глобальный уникальный идентификатор дома по ФИАС + /// Токен отмены + /// Лицевые счета + public async Task> ExportAccountAsync(string fiasHouseGuid, CancellationToken token = default) + { + var request = new ExportAccountRequest(client); + return await request.ExecuteAsync(fiasHouseGuid, token); + } + /// /// Возвращает информацию о доме /// + /// Глобальный уникальный идентификатор дома по ФИАС /// Токен отмены /// Информация о доме public async Task> ExportHouseAsync(string fiasHouseGuid, CancellationToken token = default) diff --git a/Hcs.Client/Client/Api/Request/HouseManagement/ExportAccountRequest.cs b/Hcs.Client/Client/Api/Request/HouseManagement/ExportAccountRequest.cs new file mode 100644 index 0000000..0722d69 --- /dev/null +++ b/Hcs.Client/Client/Api/Request/HouseManagement/ExportAccountRequest.cs @@ -0,0 +1,34 @@ +using Hcs.Client.Internal; +using Hcs.Service.Async.HouseManagement; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Hcs.Client.Api.Request.HouseManagement +{ + internal class ExportAccountRequest(ClientBase client) : HouseManagementRequestBase(client) + { + protected override bool EnableMinimalResponseWaitDelay => false; + + internal async Task> ExecuteAsync(string fiasHouseGuid, CancellationToken token) + { + // http://open-gkh.ru/HouseManagement/exportAccountRequest.html + var request = new exportAccountRequest + { + Id = Constants.SIGNED_XML_ELEMENT_ID, + version = "10.0.1.1", + Items = [fiasHouseGuid], + ItemsElementName = [ItemsChoiceType26.FIASHouseGuid] + }; + + var result = await SendAndWaitResultAsync(request, async asyncClient => + { + var response = await asyncClient.exportAccountDataAsync(CreateRequestHeader(), request); + return response.AckRequest.Ack; + }, token); + + return result.Items.OfType(); + } + } +} diff --git a/Hcs.Client/Hcs.Client.csproj b/Hcs.Client/Hcs.Client.csproj index 1d966f4..b156b4e 100644 --- a/Hcs.Client/Hcs.Client.csproj +++ b/Hcs.Client/Hcs.Client.csproj @@ -93,6 +93,7 @@ + diff --git a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs index 0904dda..d0901be 100644 --- a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs +++ b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs @@ -11,6 +11,12 @@ namespace Hcs.TestApp.Scenario { private readonly UniClient client = client; + internal void ExportAccount() + { + var result = client.HouseManagement.ExportAccountAsync("c48e5025-f77a-494f-8aab-f773da623a25").Result; + Console.WriteLine("Scenario execution " + (result != null && result.Count() > 0 ? "succeeded" : "failed")); + } + internal void ExportHouse() { var result = client.HouseManagement.ExportHouseAsync("c48e5025-f77a-494f-8aab-f773da623a25").Result;