public DocumentGenerationManager(IRequestDataProvider requestDataProvider, IOfferDataProvider offerDataProvider, ICustomerDataProvider customerDataProvider, IContactDataProvider contactDataProvider, IOrderDataProvider orderDataProvider, IInvoiceDataProvider invoiceDateProvider, IDepositInvoiceDataProvider depositInvoiceDataProvider, ITelephoneDataProvider telephoneDataProvider, IVisitDataProvider visitDataProvider, IEmployeeDataProvider employeeDataProvider, IOptions <DocumentGenerationConfiguration> documentGenerationConfiguration, ILogger <DocumentGenerationManager> logger) { _requestDataProvider = requestDataProvider; _offerDataProvider = offerDataProvider; _orderDataProvider = orderDataProvider; _invoiceDateProvider = invoiceDateProvider; _depositInvoiceDateProvider = depositInvoiceDataProvider; _customerDataProvider = customerDataProvider; _contactDataProvider = contactDataProvider; _telephoneDataProvider = telephoneDataProvider; _visitDataProvider = visitDataProvider; _employeeDataProvider = employeeDataProvider; _httpClient = new HttpClient(); _documentGenerationConfig = documentGenerationConfiguration.Value; _logger = logger; _offerStorageLocation = FileUtils.EnsureStorageDirectory(_documentGenerationConfig.OfferStorageLocation); _invoiceStorageLocation = FileUtils.EnsureStorageDirectory(_documentGenerationConfig.InvoiceStorageLocation); _productionTicketStorageLocation = FileUtils.EnsureStorageDirectory(_documentGenerationConfig.ProductionTicketStorageLocation); _generatedCertificateStorageLocation = FileUtils.EnsureStorageDirectory(_documentGenerationConfig.GeneratedCertificateStorageLocation); _receivedCertificateStorageLocation = FileUtils.EnsureStorageDirectory(_documentGenerationConfig.ReceivedCertificateStorageLocation); }
/// <summary> /// Get a document generation configuration managed by the subscription by the id of the configuration. /// </summary> /// <param name="configurationId">Identifier of the configuration to return.</param> /// <returns>The requested document generation configuration object.</returns> public Task <DocumentGenerationConfiguration> GetDocumentGenerationConfiguration(Guid configurationId) { var resolvedSubscriptionId = this.ResolveSubscriptionId(); try { var documentGenerationConfiguration = new DocumentGenerationConfiguration(this.Client, resolvedSubscriptionId, configurationId); return(documentGenerationConfiguration.Load()); } catch (HttpOperationException httpOperationException) { throw httpOperationException.DocumentGenerationThrow(); } }
// poll for the status of the document preparation process private static async Task <Uri> PollForProgress( DocumentGenerationConfiguration documentGenerationConfiguration, Guid documentGenerationRequestId) { const int secondsToTimesUp = 30; var stopWatch = Stopwatch.StartNew(); while (stopWatch.Elapsed.TotalSeconds < secondsToTimesUp) { var documentGenerationProgress = await documentGenerationConfiguration.GetDocumentGenerationProgress(documentGenerationRequestId).ConfigureAwait(false); switch (documentGenerationProgress.State) { case DocumentGenerationState.Failed: throw new Exception($"Document preparattion failed for template: {documentGenerationProgress.FailReason}"); case DocumentGenerationState.Requested: DiagnosticLog($"Document not yet ready."); Thread.Sleep(300); continue; case DocumentGenerationState.Completed: break; default: throw new ArgumentOutOfRangeException(); } var documentGenerationUri = await documentGenerationConfiguration.GetDocumentGenerationUri(documentGenerationRequestId).ConfigureAwait(false); if (documentGenerationUri?.Uri != null) { return(documentGenerationUri.Uri); } DiagnosticLog($"Document preparation polling gave up after {secondsToTimesUp} seconds."); } return(null); }
public DocumentGenerationManager(IRequestDataProvider requestDataProvider, IInterventionDataProvider interventionDataProvider, IOfferDataProvider offerDataProvider, ICustomerDataProvider customerDataProvider, IContactDataProvider contactDataProvider, IBuildingDataProvider buildingDataProvider, IOrderDataProvider orderDataProvider, IInvoiceDataProvider invoiceDataProvider, IDepositInvoiceDataProvider depositInvoiceDataProvider, IEmployeeDataProvider employeeDataProvider, IFileStorageService fileStorageService, IOptions <DocumentGenerationConfiguration> documentGenerationConfiguration, ILogger <DocumentGenerationManager> logger) { _requestDataProvider = requestDataProvider; _interventionDataProvider = interventionDataProvider; _offerDataProvider = offerDataProvider; _orderDataProvider = orderDataProvider; _invoiceDataProvider = invoiceDataProvider; _depositInvoiceDataProvider = depositInvoiceDataProvider; _customerDataProvider = customerDataProvider; _contactDataProvider = contactDataProvider; _buildingDataProvider = buildingDataProvider; _employeeDataProvider = employeeDataProvider; _httpClient = new HttpClient(); _fileStorageService = fileStorageService; _documentGenerationConfig = documentGenerationConfiguration.Value; _logger = logger; _visitReportStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.VisitReportStorageLocation); _interventionReportStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.InterventionReportStorageLocation); _offerStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.OfferStorageLocation); _orderStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.OrderStorageLocation); _deliveryNoteStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.DeliveryNoteStorageLocation); _invoiceStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.InvoiceStorageLocation); _generatedProductionTicketStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.GeneratedProductionTicketStorageLocation); _receivedProductionTicketStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.ReceivedProductionTicketStorageLocation); _generatedCertificateStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.GeneratedCertificateStorageLocation); _receivedCertificateStorageLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.ReceivedCertificateStorageLocation); _certificateUploadSourceLocation = _fileStorageService.EnsureDirectory(_documentGenerationConfig.CertificateUploadSourceLocation); }