diff --git a/Hcs.Client/Client/Api/HouseManagementApi.cs b/Hcs.Client/Client/Api/HouseManagementApi.cs
index 1109e02..72b4118 100644
--- a/Hcs.Client/Client/Api/HouseManagementApi.cs
+++ b/Hcs.Client/Client/Api/HouseManagementApi.cs
@@ -1,6 +1,7 @@
using Hcs.Client.Api.Request.HouseManagement;
using Hcs.Service.Async.HouseManagement;
using System;
+using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
@@ -9,6 +10,17 @@ namespace Hcs.Client.Api
// http://open-gkh.ru/HouseManagementServiceAsync/
public class HouseManagementApi(ClientBase client) : ApiBase(client)
{
+ ///
+ /// Возвращает все договора ресурсоснабжения
+ ///
+ /// Токен отмены
+ /// Договора ресурсоснабжения
+ public async Task> ExportSupplyResourceContractDataAsync(CancellationToken token = default)
+ {
+ var request = new ExportSupplyResourceContractDataRequest(client);
+ return await request.ExecuteAsync(token);
+ }
+
///
/// Возвращает договор ресурсоснабжения по его идентификатору в ГИС ЖКХ
///
@@ -20,5 +32,17 @@ namespace Hcs.Client.Api
var request = new ExportSupplyResourceContractDataRequest(client);
return await request.ExecuteAsync(contractRootGuid, token);
}
+
+ ///
+ /// Возвращает договор ресурсоснабжения по номеру договора в ГИС ЖКХ
+ ///
+ /// Номер договора ресурсоснабжения в ГИС ЖКХ
+ /// Токен отмены
+ /// Договор ресурсоснабжения
+ public async Task ExportSupplyResourceContractDataAsync(string contractNumber, CancellationToken token = default)
+ {
+ var request = new ExportSupplyResourceContractDataRequest(client);
+ return await request.ExecuteAsync(contractNumber, token);
+ }
}
}
diff --git a/Hcs.Client/Client/Api/Request/HouseManagement/ExportSupplyResourceContractDataRequest.cs b/Hcs.Client/Client/Api/Request/HouseManagement/ExportSupplyResourceContractDataRequest.cs
index 24eb256..e5825a7 100644
--- a/Hcs.Client/Client/Api/Request/HouseManagement/ExportSupplyResourceContractDataRequest.cs
+++ b/Hcs.Client/Client/Api/Request/HouseManagement/ExportSupplyResourceContractDataRequest.cs
@@ -12,13 +12,45 @@ namespace Hcs.Client.Api.Request.HouseManagement
{
protected override bool EnableMinimalResponseWaitDelay => false;
+ internal async Task> ExecuteAsync(CancellationToken token)
+ {
+ var result = new List();
+
+ void OnResultReceived(exportSupplyResourceContractResultType[] contracts)
+ {
+ if (contracts?.Length > 0)
+ {
+ result.AddRange(contracts);
+ }
+ }
+
+ var pageNum = 0;
+ Guid? exportContractRootGuid = null;
+ while (true)
+ {
+ pageNum++;
+
+ client.TryLog($"Querying page #{pageNum}...");
+
+ var data = await QueryBatchAsync(null, null, exportContractRootGuid, OnResultReceived, token);
+ if (data.IsLastPage)
+ {
+ break;
+ }
+
+ exportContractRootGuid = data.NextGuid;
+ }
+
+ return result;
+ }
+
internal async Task ExecuteAsync(Guid contractRootGuid, CancellationToken token)
{
exportSupplyResourceContractResultType result = null;
void OnResultReceived(exportSupplyResourceContractResultType[] contracts)
{
- result = contracts.Length > 0 ? contracts[0] : null;
+ result = contracts?.Length > 0 ? contracts[0] : null;
}
await QueryBatchAsync(contractRootGuid, null, null, OnResultReceived, token);
@@ -26,6 +58,20 @@ namespace Hcs.Client.Api.Request.HouseManagement
return result;
}
+ internal async Task ExecuteAsync(string contractNumber, CancellationToken token)
+ {
+ exportSupplyResourceContractResultType result = null;
+
+ void OnResultReceived(exportSupplyResourceContractResultType[] contracts)
+ {
+ result = contracts?.Length > 0 ? contracts[0] : null;
+ }
+
+ await QueryBatchAsync(null, contractNumber, null, OnResultReceived, token);
+
+ return result;
+ }
+
private async Task QueryBatchAsync(
Guid? contractRootGuid, string contractNumber, Guid? exportContractRootGuid,
Action onResultReceived,
diff --git a/Hcs.TestApp/TestApp/Program.cs b/Hcs.TestApp/TestApp/Program.cs
index 7a5d5fc..be9bf73 100644
--- a/Hcs.TestApp/TestApp/Program.cs
+++ b/Hcs.TestApp/TestApp/Program.cs
@@ -41,7 +41,9 @@ namespace Hcs.TestApp
var nsiCommonScenario = new NsiCommonScenario(client);
try
{
+ //houseManagementScenario.ExportAllSupplyResourceContractData();
//houseManagementScenario.ExportSupplyResourceContractDataByGuid();
+ //houseManagementScenario.ExportSupplyResourceContractDataByNumber();
//nsiScenario.ExportDataProviderNsiItem1();
//nsiScenario.ExportDataProviderNsiItem51();
diff --git a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
index 6aa471c..5b2a785 100644
--- a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
+++ b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
@@ -7,10 +7,22 @@ namespace Hcs.TestApp.Scenario
{
private readonly UniClient client = client;
+ internal void ExportAllSupplyResourceContractData()
+ {
+ var result = client.HouseManagement.ExportSupplyResourceContractDataAsync().Result;
+ Console.WriteLine("Scenario execution " + (result != null ? "succeeded" : "failed"));
+ }
+
internal void ExportSupplyResourceContractDataByGuid()
{
var result = client.HouseManagement.ExportSupplyResourceContractDataAsync(Guid.Parse("575a7ff9-5473-4ab4-b077-fa80c1f85f0b")).Result;
Console.WriteLine("Scenario execution " + (result != null ? "succeeded" : "failed"));
}
+
+ internal void ExportSupplyResourceContractDataByNumber()
+ {
+ var result = client.HouseManagement.ExportSupplyResourceContractDataAsync("239009043").Result;
+ Console.WriteLine("Scenario execution " + (result != null ? "succeeded" : "failed"));
+ }
}
}