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);
        }
예제 #2
0
        /// <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();
            }
        }
예제 #3
0
        // 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);
        }
예제 #4
0
        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);
        }