public async Task <MessageParameters> CreateMessageParametersAsync(long jobId)
        {
            FileUploadJob job = await _fileUploadJobManager.GetJobById(jobId);

            List <ITopicItem> topics = (await _jobTopicTaskService.GetTopicItems(job.JobType, job.IsFirstStage)).ToList();

            JobContextMessage contextMessage = new JobContextMessage(
                job.JobId,
                topics,
                job.Ukprn.ToString(),
                job.StorageReference,
                job.FileName,
                job.SubmittedBy,
                0,
                job.DateTimeSubmittedUtc);

            contextMessage.KeyValuePairs.Add("CollectionName", job.CollectionName);
            contextMessage.KeyValuePairs.Add("ReturnPeriod", job.PeriodNumber);

            AddExtraKeys(contextMessage, job);

            MessageParameters message = new MessageParameters(job.JobType)
            {
                JobContextMessage = contextMessage,
                SubscriptionLabel = topics[0].SubscriptionName,
                TopicParameters   = new Dictionary <string, object>
                {
                    {
                        "To", topics[0].SubscriptionName
                    }
                }
            };

            return(message);
        }
Пример #2
0
        public async Task GetJobMetaDataById_Success()
        {
            IContainer    container = Registrations();
            FileUploadJob result;

            using (var scope = container.BeginLifetimeScope())
            {
                // Create the schema in the database
                var options = scope.Resolve <DbContextOptions <JobQueueDataContext> >();
                using (var context = new JobQueueDataContext(options))
                {
                    context.Database.EnsureCreated();
                }

                IFileUploadJobManager manager = scope.Resolve <IFileUploadJobManager>();
                var jobId = await manager.AddJob(new FileUploadJob()
                {
                    JobId = 1,
                });

                result = await manager.GetJobById(1);
            }

            result.Should().NotBeNull();
            result.JobId.Should().Be(1);
        }
Пример #3
0
        public async Task <bool> SendMessageForCrossLoadingAsync(long jobId)
        {
            var job = await _jobQueueManager.GetJobById(jobId);

            if (job.JobType == JobType.IlrSubmission && job.IsFirstStage)
            {
                return(false);
            }

            var upin = await GetUpinAsync(job.Ukprn);

            var reportsFileName = $"{job.Ukprn}/{job.JobId}/ReportsDC";
            var message         = new MessageCrossLoadDctToDcft(
                job.JobId,
                job.Ukprn,
                upin,
                job.StorageReference,
                job.FileName,
                MapJobType(job.JobType),
                job.SubmittedBy,
                $"{reportsFileName}1.zip",
                $"{reportsFileName}2.zip");

            await _queuePublishService.PublishAsync(_crossLoadMessageMapper.FromMessage(message));

            return(true);
        }
Пример #4
0
        public async Task GetJobMetDataById_Fail_zeroId()
        {
            IContainer container = Registrations();

            using (var scope = container.BeginLifetimeScope())
            {
                IFileUploadJobManager manager = scope.Resolve <IFileUploadJobManager>();
                await Assert.ThrowsAsync <ArgumentException>(() => manager.GetJobById(0));
            }
        }
Пример #5
0
        public IActionResult GetById(long ukprn, long jobId)
        {
            _logger.LogInfo($"Request received to get the with Id: {jobId}; ukprn: {ukprn}");

            if (jobId == 0 || ukprn == 0)
            {
                _logger.LogWarning($"Request received with Job id {jobId} and ukprn {ukprn} one of which is 0");
                return(BadRequest());
            }

            var job = _fileUploadJobManager.GetJobById(jobId);

            if (job?.Ukprn != ukprn)
            {
                _logger.LogWarning($"Job id {jobId} with ukprn {ukprn} not found");
                return(BadRequest());
            }

            _logger.LogInfo($"Returning job successfully with job id: {job.JobId}");
            return(Ok(job));
        }
Пример #6
0
        public async Task AddJobMetaData_Success_Values()
        {
            IContainer    container = Registrations();
            FileUploadJob savedJob;

            using (var scope = container.BeginLifetimeScope())
            {
                // Create the schema in the database
                var options = scope.Resolve <DbContextOptions <JobQueueDataContext> >();
                using (var context = new JobQueueDataContext(options))
                {
                    context.Database.EnsureCreated();
                }

                FileUploadJob job = new FileUploadJob()
                {
                    JobId            = 1,
                    Ukprn            = 1000,
                    FileName         = "test.xml",
                    StorageReference = "test-ref",
                    FileSize         = 10.5m,
                    IsFirstStage     = true,
                    CollectionName   = "ILR1718",
                    PeriodNumber     = 10,
                    TermsAccepted    = true,
                    CollectionYear   = 1819
                };

                IFileUploadJobManager manager = scope.Resolve <IFileUploadJobManager>();
                await manager.AddJob(job);

                savedJob = await manager.GetJobById(1);
            }

            savedJob.Should().NotBeNull();
            savedJob.JobId.Should().Be(1);
            savedJob.Ukprn.Should().Be(1000);
            savedJob.FileName.Should().Be("test.xml");
            savedJob.FileSize.Should().Be(10.5m);
            savedJob.StorageReference.Should().Be("test-ref");
            savedJob.IsFirstStage.Should().Be(true);
            savedJob.CollectionName.Should().Be("ILR1718");
            savedJob.PeriodNumber.Should().Be(10);
            savedJob.TermsAccepted.Should().Be(true);
            savedJob.CollectionYear.Should().Be(1819);
        }
Пример #7
0
        public async Task GetJobById_Fail_IdNotFound()
        {
            IContainer container = Registrations();

            using (var scope = container.BeginLifetimeScope())
            {
                // Create the schema in the database
                var options = scope.Resolve <DbContextOptions <JobQueueDataContext> >();
                using (var context = new JobQueueDataContext(options))
                {
                    context.Database.EnsureCreated();
                }

                IFileUploadJobManager manager = scope.Resolve <IFileUploadJobManager>();
                await Assert.ThrowsAsync <ArgumentException>(() => manager.GetJobById(100));
            }
        }
        public async Task <IActionResult> Get(long ukprn, long jobId)
        {
            _logger.LogInfo($"Get request recieved for validation errors for ukprn {ukprn}, job id: {jobId}");

            if (jobId < 1 || ukprn < 1)
            {
                _logger.LogWarning($"invalid jobId : {jobId}, ukprn : {ukprn}");
                return(new BadRequestResult());
            }

            var job = _fileUploadMetaDataManager.GetJobById(jobId);

            if (job == null || job.Ukprn != ukprn)
            {
                _logger.LogWarning($"No job found for jobId : {jobId}, ukprn : {ukprn}");
                return(new BadRequestResult());
            }

            var fileName = GetFileName(ukprn, jobId, job.DateTimeSubmittedUtc);

            try
            {
                var keyValuePersistenceService = GetKeyValuePersistenceService(job.JobType);
                var exists = await keyValuePersistenceService.ContainsAsync(fileName);

                if (exists)
                {
                    var data = await keyValuePersistenceService.GetAsync(fileName);

                    return(Ok(JsonConvert.DeserializeObject(data)));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error occured trying to get validation errors for file name : {fileName}", ex);
                return(new BadRequestResult());
            }

            return(new NotFoundResult());
        }