Example #1
0
        /// <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));
        }
Example #2
0
        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));
                }
            }
        }