diff --git a/Hcs.Client/Client/Api/HouseManagementApi.cs b/Hcs.Client/Client/Api/HouseManagementApi.cs
index e50c552..b5e9cab 100644
--- a/Hcs.Client/Client/Api/HouseManagementApi.cs
+++ b/Hcs.Client/Client/Api/HouseManagementApi.cs
@@ -70,6 +70,18 @@ namespace Hcs.Client.Api
return await request.ExecuteAsync(payload, token);
}
+ ///
+ /// Импорт сведений о ДУ (создание ДУ)
+ ///
+ /// Пейлоад ДУ
+ /// Токен отмены
+ /// Импортированный договор
+ public async Task ImportContractDataAsync(ImportContractDataPayload payload, CancellationToken token = default)
+ {
+ var request = new ImportContractDataRequest(client);
+ return await request.ExecuteAsync(payload, token);
+ }
+
///
/// Импорт данных дома
///
diff --git a/Hcs.Client/Client/Api/Payload/HouseManagement/ImportContractDataPayload.cs b/Hcs.Client/Client/Api/Payload/HouseManagement/ImportContractDataPayload.cs
new file mode 100644
index 0000000..ab1287a
--- /dev/null
+++ b/Hcs.Client/Client/Api/Payload/HouseManagement/ImportContractDataPayload.cs
@@ -0,0 +1,62 @@
+using Hcs.Service.Async.HouseManagement;
+using System;
+
+namespace Hcs.Client.Api.Payload.HouseManagement
+{
+ public class ImportContractDataPayload
+ {
+ // TODO: LicenseRequest
+
+ ///
+ /// Объекты управления
+ ///
+ public importContractRequestContractPlacingContractContractObject[] contractObjects;
+
+ ///
+ /// Номер документа
+ ///
+ public string docNum;
+
+ ///
+ /// Дата заключения
+ ///
+ public DateTime signingDate;
+
+ ///
+ /// Дата вступления в силу
+ ///
+ public DateTime effectiveDate;
+
+ ///
+ /// Планируемая дата окончания
+ ///
+ public DateTime planDateComptetion;
+
+ // TODO: Вторая сторона договора
+
+ // TODO: Protocol
+
+ ///
+ /// Ссылка на НСИ "Основание заключения договора" (реестровый номер 58).
+ ///
+ public nsiRef contractBase;
+
+ // TODO: DateDetails
+
+ // TODO: ContractAttachment
+
+ // TODO: AgreementAttachment
+
+ // TODO: SignedOwners
+
+ // TODO: CommissioningPermitAgreement
+
+ // TODO: Charter
+
+ // TODO: LocalGovernmentDecision
+
+ // TODO: RegistryDecisionID
+
+ // TODO: AutomaticRollOverOneYear
+ }
+}
diff --git a/Hcs.Client/Client/Api/Request/HouseManagement/ImportContractDataRequest.cs b/Hcs.Client/Client/Api/Request/HouseManagement/ImportContractDataRequest.cs
new file mode 100644
index 0000000..a2142e9
--- /dev/null
+++ b/Hcs.Client/Client/Api/Request/HouseManagement/ImportContractDataRequest.cs
@@ -0,0 +1,77 @@
+using Hcs.Client.Api.Payload.HouseManagement;
+using Hcs.Client.Api.Request.Exception;
+using Hcs.Client.Internal;
+using Hcs.Service.Async.HouseManagement;
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Hcs.Client.Api.Request.HouseManagement
+{
+ internal class ImportContractDataRequest(ClientBase client) : HouseManagementRequestBase(client)
+ {
+ protected override bool CanBeRestarted => false;
+ internal async Task ExecuteAsync(ImportContractDataPayload payload, CancellationToken token)
+ {
+ // TODO: Добавить проверку пейлоада
+
+ // http://open-gkh.ru/HouseManagement/importContractRequest/Contract.html
+ var contract = new importContractRequestContract
+ {
+ TransportGUID = Guid.NewGuid().ToString(),
+ Item = GetContractFromPayload(payload)
+ };
+
+ // http://open-gkh.ru/HouseManagement/importContractRequest.html
+ var request = new importContractRequest
+ {
+ Id = Constants.SIGNED_XML_ELEMENT_ID,
+ version = "11.9.0.1",
+ Contract = [contract]
+ };
+
+ var result = await SendAndWaitResultAsync(request, async asyncClient =>
+ {
+ var response = await asyncClient.importContractDataAsync(CreateRequestHeader(), request);
+ return response.AckRequest.Ack;
+ }, token);
+
+ result.Items.OfType().ToList().ForEach(error =>
+ {
+ throw RemoteException.CreateNew(error.ErrorCode, error.Description);
+ });
+
+ var importResults = result.Items.OfType();
+ var commonResults = GetCommonResults(importResults);
+ foreach (var commonResult in commonResults)
+ {
+ if (commonResult.ItemElementName == ItemChoiceType26.importContract)
+ {
+ if (commonResult.Item is importContractResultType importedContract)
+ {
+ return importedContract;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private importContractRequestContractPlacingContract GetContractFromPayload(ImportContractDataPayload payload)
+ {
+ // http://open-gkh.ru/HouseManagement/importContractRequest/Contract/PlacingContract.html
+ var contract = new importContractRequestContractPlacingContract()
+ {
+ ContractObject = payload.contractObjects,
+ DocNum = payload.docNum,
+ SigningDate = payload.signingDate,
+ EffectiveDate = payload.effectiveDate,
+ PlanDateComptetion = payload.planDateComptetion,
+ ContractBase = payload.contractBase
+ };
+
+ return contract;
+ }
+ }
+}
diff --git a/Hcs.Client/Hcs.Client.csproj b/Hcs.Client/Hcs.Client.csproj
index 2084ce6..3240af0 100644
--- a/Hcs.Client/Hcs.Client.csproj
+++ b/Hcs.Client/Hcs.Client.csproj
@@ -70,6 +70,7 @@
+
@@ -96,6 +97,7 @@
+
diff --git a/Hcs.TestApp/TestApp/Program.cs b/Hcs.TestApp/TestApp/Program.cs
index c6d2283..4cebf08 100644
--- a/Hcs.TestApp/TestApp/Program.cs
+++ b/Hcs.TestApp/TestApp/Program.cs
@@ -50,6 +50,8 @@ namespace Hcs.TestApp
//houseManagementScenario.ImportAccountData();
+ //houseManagementScenario.ImportContractData();
+
//houseManagementScenario.ImportLivingHouseUOData();
//houseManagementScenario.ImportNotificationData();
diff --git a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
index 4d57e46..f6b0261 100644
--- a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
+++ b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
@@ -80,6 +80,34 @@ namespace Hcs.TestApp.Scenario
Console.WriteLine("Scenario execution " + (result ? "succeeded" : "failed"));
}
+ internal void ImportContractData()
+ {
+ var signingDate = new DateTime(2017, 01, 01);
+ var effectiveDate = new DateTime(2017, 01, 01);
+ var planComptetionDate = new DateTime(2078, 12, 31);
+
+ var payload = new ImportContractDataPayload()
+ {
+ contractObjects = [new importContractRequestContractPlacingContractContractObject()
+ {
+ TransportGUID = Guid.NewGuid().ToString(),
+ BaseMService = new BaseServiceType()
+ {
+ Item = true
+ },
+ FIASHouseGuid = "cf9c25b6-c7a4-40db-81f2-c97bfa46b903",
+ StartDate = signingDate
+ }],
+ docNum = "11111111",
+ signingDate = signingDate,
+ effectiveDate = effectiveDate,
+ planDateComptetion = planComptetionDate,
+ contractBase = Registry58.Element8
+ };
+ var result = client.HouseManagement.ImportContractDataAsync(payload).Result;
+ Console.WriteLine("Scenario execution " + (result != null ? "succeeded" : "failed"));
+ }
+
internal void ImportLivingHouseUOData()
{
var payload = new ImportLivingHouseUODataPayload()