コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }