diff --git a/Hcs.Client/Client/Api/HouseManagementApi.cs b/Hcs.Client/Client/Api/HouseManagementApi.cs
index 0fcc45d..5ef1245 100644
--- a/Hcs.Client/Client/Api/HouseManagementApi.cs
+++ b/Hcs.Client/Client/Api/HouseManagementApi.cs
@@ -59,6 +59,19 @@ namespace Hcs.Client.Api
}
+ ///
+ /// Импорт новости для информирования граждан
+ ///
+ /// Пейлоад новости
+ /// Токен отмены
+ /// true, если операция выполнена успешно, иначе - false
+ public async Task ImportNotificationDataAsync(ImportNotificationDataPayload payload, CancellationToken token = default)
+ {
+ var request = new ImportNotificationDataRequest(client);
+ return await request.ExecuteAsync(payload, token);
+ }
+
+
///
/// Импорт договора ресурсоснабжения с РСО
///
diff --git a/Hcs.Client/Client/Api/Payload/HouseManagement/ImportNotificationDataPayload.cs b/Hcs.Client/Client/Api/Payload/HouseManagement/ImportNotificationDataPayload.cs
new file mode 100644
index 0000000..2963143
--- /dev/null
+++ b/Hcs.Client/Client/Api/Payload/HouseManagement/ImportNotificationDataPayload.cs
@@ -0,0 +1,75 @@
+using Hcs.Service.Async.HouseManagement;
+using System;
+using System.Collections.Generic;
+
+namespace Hcs.Client.Api.Payload.HouseManagement
+{
+ // http://open-gkh.ru/HouseManagement/importNotificationRequest/notification/Create.html
+ public class ImportNotificationDataPayload
+ {
+ ///
+ /// Выборочное. Строковое представление темы, вместо ссылки на справочник. Максимальная длина
+ /// текста равно 200 символам.
+ ///
+ public string topic;
+
+ ///
+ /// Выборочное. Тема из справочника 364, заместо строкового представления темы.
+ ///
+ public nsiRef topicFromRegistry;
+
+ ///
+ /// Необязательное. Показывает высокую важность новости.
+ ///
+ public bool isImportant;
+
+ ///
+ /// Необязательное. Текст новости с максимальной длиной в 5000 символов.
+ ///
+ public string content;
+
+ ///
+ /// Адресаты. Подходящие типы для значения:
+ /// , если это глобальный уникальный идентификатор дома по ФИАС,
+ /// ,
+ /// либо true, если все дома.
+ ///
+ public List> destinations;
+
+ ///
+ /// Выборочное. Если true, то новость всегда актуальна. Иначе период актуальности берется из
+ /// и .
+ ///
+ public bool isNotLimit;
+
+ ///
+ /// Условное. Период актуальности "С". Обязательно задается в случае = false.
+ ///
+ public DateTime? startDate;
+
+ ///
+ /// Условное. Период актуальности "ДО". Обязательно задается в случае = false.
+ ///
+ public DateTime? endDate;
+
+ ///
+ /// Необязательное. Документы новостей.
+ ///
+ public AttachmentType[] attachment;
+
+ ///
+ /// Необязательное. Если true, то новость отправляется адресатам.
+ ///
+ public bool isShipOff;
+
+ ///
+ /// Необязательное. Признак "Для публикации в мобильном приложении".
+ ///
+ public bool isForPublishToMobileApp;
+
+ ///
+ /// Необязательное. Информация для новости, публикуемой в мобильном приложении.
+ ///
+ public importNotificationRequestNotificationCreateMobileAppData mobileAppData;
+ }
+}
diff --git a/Hcs.Client/Client/Api/Payload/HouseManagement/ImportSupplyResourceContractDataPayload.cs b/Hcs.Client/Client/Api/Payload/HouseManagement/ImportSupplyResourceContractDataPayload.cs
index b023e5b..986a842 100644
--- a/Hcs.Client/Client/Api/Payload/HouseManagement/ImportSupplyResourceContractDataPayload.cs
+++ b/Hcs.Client/Client/Api/Payload/HouseManagement/ImportSupplyResourceContractDataPayload.cs
@@ -29,12 +29,12 @@ namespace Hcs.Client.Api.Payload.HouseManagement
public DateTime effectiveDate;
///
- /// Необязательное. По умолчанию = true. Договор заключен на неопределенный срок или нет
+ /// Необязательное. Договор заключен на неопределенный срок или нет
///
public bool? indefiniteTerm;
///
- /// Необязательное. По умолчанию = true. Автоматически пролонгировать договор на один год при наступлении
+ /// Необязательное. Автоматически пролонгировать договор на один год при наступлении
/// даты окончания действия или нет.
///
public bool? automaticRollOverOneYear;
@@ -53,7 +53,7 @@ namespace Hcs.Client.Api.Payload.HouseManagement
public SupplyResourceContractTypePeriod period;
///
- /// Необязательное. По умолчанию = true. Показывает, разрешена ли гражданам передача текущих показаний по
+ /// Необязательное. Показывает, разрешена ли гражданам передача текущих показаний по
/// индивидуальным приборам учета в любой день месяца. Заполнение возможно только если: в настройках
/// организации установлена настройка "Разрешить передачу гражданам показаний индивидуальных или общих
/// (квартирных) приборов учета в любой день месяца" ИЛИ в настройках организации установлена настройка
@@ -70,14 +70,14 @@ namespace Hcs.Client.Api.Payload.HouseManagement
public nsiRef[] contractBase;
///
- /// Контрагент. По умолчанию = true. Подходящие типы:
+ /// Контрагент. Подходящие типы:
/// ,
/// ,
/// ,
/// ,
/// либо true, если это договор оферты.
///
- public object counterparty = true;
+ public object counterparty;
///
/// Если в договоре в наличии плановый объем и режим подачи поставки ресурсов то true, иначе - false
@@ -110,10 +110,10 @@ namespace Hcs.Client.Api.Payload.HouseManagement
public SupplyResourceContractTypeSpecifyingQualityIndicators specifyingQualityIndicators;
///
- /// Необязательное. По умолчанию = true. Признак "Отсутствие присоединения сетей объектов жилищного
- /// фонда к централизованной системе водоснабжения". Может быть указан, только если показатели качества
- /// коммунальных ресурсов ведутся в разрезе договора и предмет договора включает коммунальную услугу
- /// "Холодное водоснабжение" И/ИЛИ "Горячее водоснабжение"/
+ /// Необязательное. Признак "Отсутствие присоединения сетей объектов жилищного фонда к централизованной
+ /// системе водоснабжения". Может быть указан, только если показатели качества коммунальных ресурсов
+ /// ведутся в разрезе договора и предмет договора включает коммунальную услугу "Холодное водоснабжение"
+ /// И/ИЛИ "Горячее водоснабжение"/
///
public bool? noConnectionToWaterSupply;
diff --git a/Hcs.Client/Client/Api/Request/HouseManagement/ImportNotificationDataRequest.cs b/Hcs.Client/Client/Api/Request/HouseManagement/ImportNotificationDataRequest.cs
new file mode 100644
index 0000000..95057f8
--- /dev/null
+++ b/Hcs.Client/Client/Api/Request/HouseManagement/ImportNotificationDataRequest.cs
@@ -0,0 +1,110 @@
+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.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Hcs.Client.Api.Request.HouseManagement
+{
+ internal class ImportNotificationDataRequest(ClientBase client) : HouseManagementRequestBase(client)
+ {
+ protected override bool CanBeRestarted => false;
+
+ internal async Task ExecuteAsync(ImportNotificationDataPayload payload, CancellationToken token)
+ {
+ // TODO: Добавить проверку пейлоада
+
+ var notification = new importNotificationRequestNotification()
+ {
+ TransportGUID = Guid.NewGuid().ToString(),
+ Item = GetNotificationFromPayload(payload)
+ };
+
+ // http://open-gkh.ru/HouseManagement/importNotificationRequest.html
+ var request = new importNotificationRequest
+ {
+ Id = Constants.SIGNED_XML_ELEMENT_ID,
+ version = "13.2.2.0",
+ notification = [notification]
+ };
+
+ var result = await SendAndWaitResultAsync(request, async asyncClient =>
+ {
+ var response = await asyncClient.importNotificationDataAsync(CreateRequestHeader(), request);
+ return response.AckRequest.Ack;
+ }, token);
+
+ result.Items.OfType().ToList().ForEach(error =>
+ {
+ throw RemoteException.CreateNew(error.ErrorCode, error.Description);
+ });
+
+ return true;
+ }
+
+ private importNotificationRequestNotificationCreate GetNotificationFromPayload(ImportNotificationDataPayload payload)
+ {
+ var notification = new importNotificationRequestNotificationCreate();
+
+ if (!string.IsNullOrEmpty(payload.topic))
+ {
+ notification.Item = payload.topic;
+ }
+ else
+ {
+ notification.Item = payload.topicFromRegistry;
+ }
+
+ if (payload.isImportant)
+ {
+ notification.IsImportant = true;
+ notification.IsImportantSpecified = true;
+ }
+
+ notification.content = payload.content;
+
+ var items = new List