using Hcs.ClientApi.DataTypes; using Hcs.Service.Async.HouseManagement.v15_7_0_1; using System; using System.Threading; using System.Threading.Tasks; using HouseManagement = Hcs.Service.Async.HouseManagement.v15_7_0_1; namespace Hcs.ClientApi.HouseManagementApi { /// /// Метод отправки в ГИС проекта договора ресурсоснабжения, удаления /// проекта договора РСО, перевода проекта в статус Размещенные /// public class HcsMethodImportSupplyResourceContractProject : HcsHouseManagementMethod { public HcsMethodImportSupplyResourceContractProject (HcsClientConfig config) : base(config) { EnableMinimalResponseWaitDelay = true; CanBeRestarted = false; } /// /// Выполнение удаления в ГИС проекта договора /// public async Task DeleteContractProject(ГисДоговор договор, CancellationToken token) { await DoContractProjectOperation( договор, Item1ChoiceType10.DeleteContractProject, token); } /// /// Выполнение перевода проекта договора в статус Размещен /// public async Task PlaceContractProject(ГисДоговор договор, CancellationToken token) { await DoContractProjectOperation( договор, Item1ChoiceType10.PlacingContractProject, token); } private async Task DoContractProjectOperation( ГисДоговор договор, Item1ChoiceType10 operationType, CancellationToken token) { if (договор == null) throw new ArgumentNullException(nameof(договор)); if (договор.ГуидВерсииДоговора == default) throw new ArgumentException("Для проекта договора не указан ГУИД версии"); var contract = new HouseManagement.importSupplyResourceContractProjectRequestContract() { TransportGUID = FormatGuid(Guid.NewGuid()), ItemElementName = ItemChoiceType35.ContractRootGUID, Item = FormatGuid(договор.ГуидДоговора), // TODO: Проверить комментарий // Если удалять версию проекта то остается предыдущая версия проекта //ItemElementName = ItemChoiceType29.ContractGUID, //Item = FormatGuid(договор.ГуидВерсииДоговора), Item1ElementName = operationType, Item1 = true, }; var request = new HouseManagement.importSupplyResourceContractProjectRequest() { Id = HcsConstants.SignedXmlElementId, Contract = [contract], // TODO: Проверить комментарий //version = "13.1.1.1" // Версия указана в API }; var stateResult = await SendAndWaitResultAsync(request, async (portClient) => { var ackResponse = await portClient.importSupplyResourceContractProjectDataAsync( CreateRequestHeader(), request); return ackResponse.AckRequest.Ack; }, token); ParseSingleImportResult(stateResult); } } }