diff --git a/Hcs.Client/Client/Api/NsiCommonApi.cs b/Hcs.Client/Client/Api/NsiCommonApi.cs index 317e57a..7377417 100644 --- a/Hcs.Client/Client/Api/NsiCommonApi.cs +++ b/Hcs.Client/Client/Api/NsiCommonApi.cs @@ -28,5 +28,24 @@ namespace Hcs.Client.Api return null; } } + + /// + /// Возвращает перечень общесистемных справочников с указанием даты последнего изменения каждого из них + /// + /// Группа справочников, где NSI - общесистемный, а NSIRAO - ОЖФ + /// Токен отмены + /// Перечень общесистемных справочников + public async Task ExportNsiListAsync(ListGroup listGroup, CancellationToken token = default) + { + try + { + var request = new ExportNsiListRequest(client); + return await request.ExecuteAsync(listGroup, token); + } + catch (NoResultsRemoteException) + { + return null; + } + } } } diff --git a/Hcs.Client/Client/Api/Request/NsiCommon/ExportNsiListRequest.cs b/Hcs.Client/Client/Api/Request/NsiCommon/ExportNsiListRequest.cs new file mode 100644 index 0000000..8c61cfe --- /dev/null +++ b/Hcs.Client/Client/Api/Request/NsiCommon/ExportNsiListRequest.cs @@ -0,0 +1,29 @@ +using Hcs.Client.Internal; +using Hcs.Service.Async.NsiCommon; +using System.Threading; +using System.Threading.Tasks; + +namespace Hcs.Client.Api.Request.NsiCommon +{ + internal class ExportNsiListRequest(ClientBase client) : NsiCommonRequestBase(client) + { + internal async Task ExecuteAsync(ListGroup listGroup, CancellationToken token) + { + // http://open-gkh.ru/NsiCommon/exportNsiListRequest.html + var request = new exportNsiListRequest + { + Id = Constants.SIGNED_XML_ELEMENT_ID, + version = "10.0.1.2", + ListGroup = listGroup + }; + + var result = await SendAndWaitResultAsync(request, async asyncClient => + { + var response = await asyncClient.exportNsiListAsync(CreateRequestHeader(), request); + return response.AckRequest.Ack; + }, token); + + return result.Item as NsiListType; + } + } +} diff --git a/Hcs.Client/Hcs.Client.csproj b/Hcs.Client/Hcs.Client.csproj index 1da3804..ed3510a 100644 --- a/Hcs.Client/Hcs.Client.csproj +++ b/Hcs.Client/Hcs.Client.csproj @@ -124,6 +124,7 @@ + diff --git a/Hcs.TestApp/TestApp/Program.cs b/Hcs.TestApp/TestApp/Program.cs index 4b36cb7..46571ca 100644 --- a/Hcs.TestApp/TestApp/Program.cs +++ b/Hcs.TestApp/TestApp/Program.cs @@ -76,6 +76,7 @@ namespace Hcs.TestApp //nsiCommonScenario.ExportNsiItem2(); //nsiCommonScenario.ExportNsiItem16(); //nsiCommonScenario.ExportNsiItem276(); + //nsiCommonScenario.ExportNsiList(); //orgRegistryCommonScenario.ExportDataProvider(); //orgRegistryCommonScenario.ExportOrgRegistry(); diff --git a/Hcs.TestApp/TestApp/Scenario/NsiCommonScenario.cs b/Hcs.TestApp/TestApp/Scenario/NsiCommonScenario.cs index 7ba6532..7ddff5f 100644 --- a/Hcs.TestApp/TestApp/Scenario/NsiCommonScenario.cs +++ b/Hcs.TestApp/TestApp/Scenario/NsiCommonScenario.cs @@ -25,5 +25,11 @@ namespace Hcs.TestApp.Scenario var result = client.NsiCommon.ExportNsiItemAsync(276, ListGroup.NSI).Result; Console.WriteLine("Scenario execution " + (result != null ? "succeeded" : "failed")); } + + internal void ExportNsiList() + { + var result = client.NsiCommon.ExportNsiListAsync(ListGroup.NSI).Result; + Console.WriteLine("Scenario execution " + (result != null ? "succeeded" : "failed")); + } } }