public async Task <FileUploadJobMetaDataModel> PopulateFileUploadJobMetaDataModel( FileUploadJobMetaDataModel file, string reportName, string resultsReportName, CloudBlobContainer container, string periodPrefix, CancellationToken cancellationToken) { file.DisplayStatus = _jobStatusService.GetDisplayStatusFromJobStatus(file); if (file.JobStatus != JobStatuses.JobStatus_Completed) { return(file); } file.ReportName = $"{reportName} {file.FileName}"; var resultFileName = $"{periodPrefix}{file.PeriodNumber}/{file.JobId}/{resultsReportName} {Path.GetFileNameWithoutExtension(file.FileName)}.json"; var result = await _cloudStorageService.GetSubmissionSummary(container, resultFileName, cancellationToken); if (result == null) { return(file); } file.RecordCount = result.RecordCount; file.ErrorCount = result.ErrorCount; return(file); }
public string GetDisplayStatusFromJobStatus(FileUploadJobMetaDataModel model) { if (JobStatuses.ProcessingStates.Contains(model.JobStatus)) { return(JobStatuses.JobProcessing); } if (JobStatuses.FailedStates.Contains(model.JobStatus)) { return(JobStatuses.JobFailed); } if (model.JobStatus == JobStatuses.JobStatus_Completed) { return(model.ErrorCount > 0 ? JobStatuses.JobRejected : JobStatuses.JobCompleted); } return(string.Empty); }
public async Task <FileUploadJobMetaDataModel> PopulateFileUploadJobMetaDataModelForReferenceDataUpload( FileUploadJobMetaDataModel file, string resultsReportName, string summaryFileName, CloudBlobContainer container, string collectionName, CancellationToken cancellationToken) { var clockDate = GetClockDate(file.SubmissionDate); file.DisplayDate = BuildDisplayDate(clockDate); file.FileName = Path.GetFileName(file.FileName); file.CollectionName = collectionName; file.FileName = file.FileName.Substring(file.FileName.IndexOf("/", StringComparison.InvariantCulture) + 1); if (file.JobStatus != JobStatuses.JobStatus_Completed) { file.DisplayStatus = _jobStatusService.GetDisplayStatusFromJobStatus(file); return(file); } var dateSection = Path.GetFileNameWithoutExtension(file.FileName).Substring(file.FileName.IndexOf('-')); file.ReportName = BuildReportName(resultsReportName, dateSection, FileNameExtensionConsts.CSV); var resultFileName = $"{collectionName}/{file.JobId}/{summaryFileName} {Path.GetFileNameWithoutExtension(file.FileName)}.json"; var submissionSummary = await _cloudStorageService.GetSubmissionSummary(container, resultFileName, cancellationToken); if (submissionSummary != null) { file.WarningCount = submissionSummary.WarningCount; file.RecordCount = submissionSummary.RecordCount; file.ErrorCount = submissionSummary.ErrorCount; } file.DisplayStatus = _jobStatusService.GetDisplayStatusFromJobStatus(file); return(file); }
public async Task BuildFileUploadJobMetaDataModelForReferenceDataProcess() { var cancellationToken = CancellationToken.None; var submissionDateUtc = new DateTime(2020, 8, 1, 9, 0, 0); var clockDate = new DateTime(2020, 8, 1, 8, 0, 0); var file1 = new FileUploadJobMetaDataModel { JobId = 1, JobStatus = 4, SubmissionDate = submissionDateUtc }; var file2 = new FileUploadJobMetaDataModel { JobId = 2, JobStatus = 1, SubmissionDate = submissionDateUtc }; var fileModels = new List <FileUploadJobMetaDataModel> { file1, file2 }; var collectionName = "CollectionName"; var containerName = "Container"; var reportFormat = "ReportPreFix"; var reportExtension = ".csv"; var fileNameFormat = "FileNamePreFix"; var fileNameExtension = ".zip"; var jobStatusService = new Mock <IJobStatusService>(); jobStatusService.Setup(x => x.GetDisplayStatusFromJobStatus(file1)).Returns("Completed"); jobStatusService.Setup(x => x.GetDisplayStatusFromJobStatus(file2)).Returns("Processing"); var cloudStorageService = new Mock <ICloudStorageService>(); var dateTimeProvider = new Mock <IDateTimeProvider>(); dateTimeProvider.Setup(x => x.ConvertUtcToUk(submissionDateUtc)).Returns(clockDate); var fileService = new Mock <IFileService>(); fileService.Setup(x => x.GetFileReferencesAsync(containerName, $"{collectionName}/{1}", true, cancellationToken, false)).ReturnsAsync(new List <string> { @"Container/CollectionName/1/FileNamePreFix.1.2.202008010800.zip" }); fileService.Setup(x => x.GetFileReferencesAsync(containerName, $"{collectionName}/{2}", true, cancellationToken, false)).ReturnsAsync(new List <string> { @"Container/CollectionName/2/FileNamePreFix.1.2.202008010800.zip" }); var fileServiceIndex = new Mock <IIndex <PersistenceStorageKeys, IFileService> >(); fileServiceIndex.Setup(x => x[PersistenceStorageKeys.DctAzureStorage]).Returns(fileService.Object); fileServiceIndex.Setup(x => x[PersistenceStorageKeys.DctAzureStorage]).Returns(fileService.Object); var expectedFileModels = new List <FileUploadJobMetaDataModel> { new FileUploadJobMetaDataModel { JobId = 1, JobStatus = 4, SubmissionDate = submissionDateUtc, DisplayDate = "1 August 2020 at 8:00 am", CollectionName = collectionName, FileName = "FileNamePreFix.1.2.202008010800.zip", ReportName = "ReportPreFix-202008010800.csv", DisplayStatus = "Completed" }, new FileUploadJobMetaDataModel { JobId = 2, JobStatus = 1, SubmissionDate = submissionDateUtc, DisplayDate = "1 August 2020 at 8:00 am", CollectionName = collectionName, DisplayStatus = "Processing" } }; var resultModel = await NewBuilder(jobStatusService.Object, cloudStorageService.Object, dateTimeProvider.Object, fileServiceIndex.Object) .BuildFileUploadJobMetaDataModelForReferenceDataProcess( fileModels, collectionName, containerName, reportFormat, reportExtension, fileNameFormat, fileNameExtension, cancellationToken); resultModel.Should().BeEquivalentTo(expectedFileModels); }
public async Task GetProcessOutputsForCollectionAsync() { var cancellationToken = CancellationToken.None; var submissionDateUtc = new DateTime(2020, 8, 1, 9, 0, 0); var clockDate = new DateTime(2020, 8, 1, 8, 0, 0); var collectionName = "CollectionName"; var containerName = "Container"; var reportFormat = "ReportPreFix"; var reportExtension = ".csv"; var fileNameFormat = "FileNamePreFix"; var fileNameExtension = ".zip"; var file1 = new FileUploadJobMetaDataModel { JobId = 1, JobStatus = 4, SubmissionDate = submissionDateUtc }; var file2 = new FileUploadJobMetaDataModel { JobId = 2, JobStatus = 1, SubmissionDate = submissionDateUtc }; var fileModels = new List <FileUploadJobMetaDataModel> { file1, file2 }; var builtFileModels = new List <FileUploadJobMetaDataModel> { new FileUploadJobMetaDataModel { JobId = 1, JobStatus = 4, SubmissionDate = submissionDateUtc, DisplayDate = "1 August 2020 at 8:00 am", CollectionName = collectionName, FileName = "FileNamePreFix.1.2.202008010800.zip", ReportName = "ReportPreFix-202008010800.csv", DisplayStatus = "Completed" }, new FileUploadJobMetaDataModel { JobId = 2, JobStatus = 1, SubmissionDate = submissionDateUtc, DisplayDate = "1 August 2020 at 8:00 am", CollectionName = collectionName, DisplayStatus = "Processing" } }; var refDataServiceClient = new Mock <IReferenceDataServiceClient>(); refDataServiceClient.Setup(x => x.GetSubmittedFilesPerCollectionAsync(It.IsAny <string>(), collectionName, cancellationToken)).ReturnsAsync(fileModels); var modelBuilderService = new Mock <IFileUploadJobMetaDataModelBuilderService>(); modelBuilderService.Setup(x => x.BuildFileUploadJobMetaDataModelForReferenceDataProcess( fileModels, collectionName, containerName, reportFormat, reportExtension, fileNameFormat, fileNameExtension, cancellationToken)).ReturnsAsync(builtFileModels); var viewModel = await NewService(modelBuilderService.Object, refDataServiceClient.Object) .GetProcessOutputsForCollectionAsync( containerName, collectionName, reportFormat, reportExtension, fileNameFormat, fileNameExtension); var expectedModel = new ReferenceDataViewModel { ReferenceDataCollectionName = collectionName, Files = builtFileModels }; viewModel.Should().BeEquivalentTo(expectedModel); }