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; } }
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); }
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); }
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); }
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}"); }