Exemplo n.º 1
0
        public async Task <IActionResult> GetContainerRelationshipsAsync(string id)
        {
            var queryModel = new GetDocumentContainerRelationshipsQueryModel
            {
                Id = id
            };
            GetDocumentContainerRelationshipsResultModel resultModel;

            try
            {
                resultModel = await _queryHandler.HandleAsync(queryModel);
            }
            catch (QueryModelException ex)
            {
                // When Query model validation fails.
                _logger.LogError(ex.Message, ex);
                throw;
            }
            catch (FailedApiRequestException ex)
            {
                // When Panviva API results in a error.
                _logger.LogError(ex.Message, ex);
                throw;
            }

            return(Ok(resultModel));
        }
Exemplo n.º 2
0
        public async Task <ModifiedDocumentModel> GetAsync(string id)
        {
            var getDocumentQueryModel = new GetDocumentQueryModel
            {
                Id = id
            };

            var getDocumentContainersQueryModel = new GetDocumentContainersQueryModel
            {
                Id = id
            };

            var getDocumentTranslationsQueryModel = new GetDocumentTranslationsQueryModel
            {
                Id = id
            };

            var getDocumentContainerRelationshipsQueryModel = new GetDocumentContainerRelationshipsQueryModel
            {
                Id = id
            };

            var getContainersTask         = _queryHandler.HandleAsync(getDocumentContainersQueryModel);
            var getContainerRelationships = _queryHandler.HandleAsync(getDocumentContainerRelationshipsQueryModel);
            var getTranslationsTask       = _queryHandler.HandleAsync(getDocumentTranslationsQueryModel);

            GetDocumentResultModel mainDocument;

            try
            {
                // Execute calls to Panviva through SDK.
                mainDocument = await _queryHandler.HandleAsync(getDocumentQueryModel);

                Task.WaitAll(getTranslationsTask, getContainerRelationships, getContainersTask);
            }
            catch (QueryModelException ex)
            {
                // When Query model validation fails.
                _logger.LogError(ex.Message, ex);
                throw;
            }
            catch (FailedApiRequestException ex)
            {
                // When Panviva API results in a error.
                _logger.LogError(ex.Message, ex);
                throw;
            }

            var finalResult = Mapper.Map(mainDocument);

            finalResult.Containers    = getContainersTask.Result.Containers;
            finalResult.Translations  = getTranslationsTask.Result.Translations;
            finalResult.Origin        = getTranslationsTask.Result.Origin;
            finalResult.Relationships = getContainerRelationships.Result.Relationships;

            return(finalResult);
        }