/// <summary> /// Отправить документ во внешний сервис /// </summary> /// <param name="serializedDocument">Сериализованный документ</param> /// <param name="cancellationToken">Токен отмены</param> /// <returns>Результат публикации</returns> private Task <DocumentPublicationInfo> SendXmlDocumentAsync(object serializedDocument, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); int?loadId = null; var publicationResult = (PublicationResultType) new Random().Next(0, 3); if (publicationResult == PublicationResultType.Success) { loadId = new Random().Next(1, int.MaxValue); } var documentPublicationInfo = new DocumentPublicationInfo(Guid.NewGuid().ToString(), publicationResult, loadId, serializedDocument.ToString(), "document publish response"); return(Task.FromResult(documentPublicationInfo)); }
private void SavePublishTaskInfo(PublishDocumentTask publishDocumentTask, DocumentPublicationInfo documentPublicationInfo) { var publishDocumentTaskAttempt = new PublishDocumentTaskAttempt { PublishDocumentTaskId = publishDocumentTask.Id, Response = documentPublicationInfo.Response, Request = documentPublicationInfo.Request, HasEisExceptions = documentPublicationInfo.HasInnerExceptions, Result = documentPublicationInfo.ResultType }; publishDocumentTask.State = ConvertToPublishState(documentPublicationInfo.ResultType); publishDocumentTask.HasEisExceptions = publishDocumentTask.HasEisExceptions || publishDocumentTaskAttempt.HasEisExceptions; publishDocumentTask.LoadId = documentPublicationInfo.LoadId; publishDocumentTask.RefId = documentPublicationInfo.RefId; publishDocumentTask.UpdatedAt = DateTime.Now; publishDocumentTask.PublishDocumentTaskAttempts.Add(publishDocumentTaskAttempt); PublishDocumentTaskRepository.Save(publishDocumentTask); _logger.LogDebug( $"id={publishDocumentTask.DocumentId} PublishDocumentTask.State= {publishDocumentTask.State} attempt result= {publishDocumentTaskAttempt.Result}"); PublishState ConvertToPublishState(PublicationResultType resultType) { switch (resultType) { case PublicationResultType.Success: return(PublishState.Published); case PublicationResultType.Failed: return(PublishState.Failed); case PublicationResultType.Processing: return(PublishState.Processing); case PublicationResultType.XmlValidationError: return(PublishState.XmlValidationError); default: throw new ArgumentOutOfRangeException(nameof(resultType)); } } }