public async Task <IActionResult> GetDocumentAsync(string id) { var queryModel = new GetDocumentQueryModel { Id = id }; GetDocumentResultModel 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)); }
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)); }
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); }