public async Task Run([ServiceBusTrigger("%AdminFileExtractQueue%", Connection = "DASServiceBusConnectionString")] AdminFileExtractRequest fileToExtract)
        {
            _logger.LogDebug($"Saving {fileToExtract.AdminFileType} clarification file into Datamart for application {fileToExtract.ApplicationId},  page: {fileToExtract.PageId}, filename: {fileToExtract.Filename}");

            try
            {
                switch (fileToExtract.AdminFileType)
                {
                case AdminFileType.Gateway:
                    await ExtractGatewayFile(fileToExtract);

                    break;

                case AdminFileType.Assessor:
                    await ExtractAssessorFile(fileToExtract);

                    break;

                case AdminFileType.Finance:
                    await ExtractFinanceFile(fileToExtract);

                    break;

                default:
                    throw new NotImplementedException($"{fileToExtract.AdminFileType} is not yet supported");
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Unable to save {fileToExtract.AdminFileType} clarification file into Datamart for application {fileToExtract.ApplicationId} and page {fileToExtract.PageId}, filename: {fileToExtract.Filename}");
                throw;
            }
        }
Ejemplo n.º 2
0
        public async Task Run_Logs_Debug_Message()
        {
            var request = new AdminFileExtractRequest(new AssessorClarificationOutcome());
            await _sut.Run(request);

            _logger.Verify(x => x.Log(LogLevel.Debug, It.IsAny <EventId>(), It.IsAny <It.IsAnyType>(), It.IsAny <Exception>(), It.IsAny <Func <It.IsAnyType, Exception, string> >()), Times.AtLeastOnce);
        }
Ejemplo n.º 3
0
        public async Task Run_Downloads_and_Saves_Finance_File_Into_BlobStorage()
        {
            var financeClarificationFile = new FinancialReviewClarificationFile {
                Filename = "file.pdf"
            };

            var request = new AdminFileExtractRequest(_applicationId, financeClarificationFile);
            await _sut.Run(request);

            _applyApiClient.Verify(x => x.DownloadFinanceClarificationFile(_applicationId, financeClarificationFile.Filename), Times.Once);
            _blobClient.Verify(x => x.UploadAsync(It.IsAny <Stream>(), true, It.IsAny <CancellationToken>()), Times.Once);
        }
Ejemplo n.º 4
0
        public async Task Run_Downloads_and_Saves_Assessor_File_Into_BlobStorage()
        {
            var assessorClarificationOutcome = new AssessorClarificationOutcome {
                ApplicationId = _applicationId, ClarificationFile = "file.pdf"
            };

            var request = new AdminFileExtractRequest(assessorClarificationOutcome);
            await _sut.Run(request);

            _applyApiClient.Verify(x => x.DownloadAssessorClarificationFile(assessorClarificationOutcome.ApplicationId, assessorClarificationOutcome.SequenceNumber, assessorClarificationOutcome.SectionNumber, assessorClarificationOutcome.PageId, assessorClarificationOutcome.ClarificationFile), Times.AtLeastOnce);
            _blobClient.Verify(x => x.UploadAsync(It.IsAny <Stream>(), true, It.IsAny <CancellationToken>()), Times.Once);
        }
Ejemplo n.º 5
0
        public async Task Run_Downloads_and_Saves_Gateway_File_Into_BlobStorage()
        {
            var gatewayReviewDetails = new GatewayReviewDetails {
                GatewaySubcontractorDeclarationClarificationUpload = "file.pdf"
            };

            var request = new AdminFileExtractRequest(_applicationId, gatewayReviewDetails);
            await _sut.Run(request);

            _applyApiClient.Verify(x => x.DownloadGatewaySubcontractorDeclarationClarificationFile(_applicationId, gatewayReviewDetails.GatewaySubcontractorDeclarationClarificationUpload), Times.Once);
            _blobClient.Verify(x => x.UploadAsync(It.IsAny <Stream>(), true, It.IsAny <CancellationToken>()), Times.Once);
        }
        private async Task ExtractFinanceFile(AdminFileExtractRequest fileToExtract)
        {
            var blobContainerClient = await _datamartBlobStorageFactory.GetAdminBlobContainerClient();

            await using var filestream = await _applyApiClient.DownloadFinanceClarificationFile(fileToExtract.ApplicationId, fileToExtract.Filename);

            var blobName = $"{fileToExtract.ApplicationId}/{fileToExtract.PageId}/{fileToExtract.AdminFileType}/{fileToExtract.Filename}";

            var blobClient = blobContainerClient.GetBlobClient(blobName);
            await blobClient.UploadAsync(filestream, overwrite : true);

            _logger.LogInformation($"Saved {fileToExtract.AdminFileType} clarification file into Datamart for application {fileToExtract.ApplicationId},  page: {fileToExtract.PageId}, filename: {fileToExtract.Filename}. Data-mart path: {blobName}");
        }