Ejemplo n.º 1
0
        public async Task <IActionResult> GetContainersAsync(string id)
        {
            var queryModel = new GetDocumentContainersQueryModel
            {
                Id = id
            };
            GetDocumentContainersResultModel 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));
        }
Ejemplo n.º 2
0
        private static void Main(string[] args)
        {
            // In this region we setup manual Dependency Injection and Host Build for Panviva .Net Sdk
            #region SetupDI

            var builder = new ConfigurationBuilder();
            BuildConfig(builder);

            var host = Host.CreateDefaultBuilder()
                       .ConfigureServices((context, services) => { services.AddPanvivaApis(); })
                       .Build();

            var queryHandler = ActivatorUtilities.CreateInstance <QueryHandler>(host.Services);
            #endregion

            // TODO : Change this id to match your requirement
            // str | A document unique identifier, Document ID. If a document is a translated document, this value represents Internal ID or IID in Panviva API v1.
            var documentId = "469";

            var getDocumentQueryModel = new GetDocumentQueryModel {
                Id = documentId
            };
            var getDocumentContainersQueryModel = new GetDocumentContainersQueryModel {
                Id = documentId
            };
            var getDocumentTranslationsQueryModel = new GetDocumentTranslationsQueryModel {
                Id = documentId
            };

            object mainDocument;
            object containers;
            object translations;

            try
            {
                // Call the Panviva SDK and get responses,
                mainDocument = queryHandler.HandleAsync(getDocumentQueryModel).Result;
                containers   = queryHandler.HandleAsync(getDocumentContainersQueryModel).Result;
                translations = queryHandler.HandleAsync(getDocumentTranslationsQueryModel).Result;
            }
            catch (Exception e)
            {
                Console.WriteLine($"Exception occurred when calling Panviva APIs : {e.Message}");
                throw;
            }

            var mainDocumentAsJson = JsonConvert.SerializeObject(mainDocument);
            var containersAsJson   = JsonConvert.SerializeObject(containers);
            var translationsAsJson = JsonConvert.SerializeObject(translations);

            var cleanedMainDocument = JObject.Parse(mainDocumentAsJson);
            cleanedMainDocument.Property("Links")?.Remove();

            Console.WriteLine($"---- Details of the Document '{documentId}' ----");

            PrintJson(cleanedMainDocument);
            PrintJson(JObject.Parse(containersAsJson));
            PrintJson(JObject.Parse(translationsAsJson));
        }
Ejemplo n.º 3
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);
        }