Exemple #1
0
        public IEnumerable <FileUploadJob> ConvertJobs(IEnumerable <FileUploadJobMetaData> entities)
        {
            var items = new List <FileUploadJob>();

            foreach (var entity in entities)
            {
                var model = new FileUploadJob();
                JobConverter.Convert(entity, model);
                items.Add(model);
            }

            return(items);
        }
        public async Task <IEnumerable <Jobs.Model.Job> > GetAllJobs()
        {
            var jobs = new List <Jobs.Model.Job>();

            using (IJobQueueDataContext context = _contextFactory())
            {
                var jobEntities = await context.Job.ToListAsync();

                jobEntities.ForEach(x => jobs.Add(JobConverter.Convert(x)));
            }

            return(jobs);
        }
        public async Task <bool> UpdateJob(Jobs.Model.Job job)
        {
            if (job == null)
            {
                throw new ArgumentNullException();
            }

            using (IJobQueueDataContext context = _contextFactory())
            {
                Job entity = await context.Job.SingleOrDefaultAsync(x => x.JobId == job.JobId);

                if (entity == null)
                {
                    throw new ArgumentException($"Job id {job.JobId} does not exist");
                }

                bool statusChanged = entity.Status != (short)job.Status;

                JobConverter.Convert(job, entity);
                entity.DateTimeUpdatedUtc = _dateTimeProvider.GetNowUtc();
                context.Entry(entity).Property("RowVersion").OriginalValue = job.RowVersion == null ? null : Convert.FromBase64String(job.RowVersion);
                context.Entry(entity).State = EntityState.Modified;

                if (job.Status == JobStatusType.Ready)
                {
                    context.JobSubmission.Add(new JobSubmission()
                    {
                        DateTimeUtc = _dateTimeProvider.GetNowUtc(),
                        JobId       = job.JobId
                    });
                }

                try
                {
                    await context.SaveChangesAsync();

                    if (statusChanged)
                    {
                        await SendEmailNotification(job);
                    }

                    return(true);
                }
                catch (DbUpdateConcurrencyException exception)
                {
                    throw new Exception(
                              "Save failed. Job details have been changed. Reload the job object and try save again");
                }
            }
        }
        public async Task <IEnumerable <Jobs.Model.Job> > GetJobsByPriorityAsync(int resultCount)
        {
            List <Jobs.Model.Job> jobs = new List <Jobs.Model.Job>();

            using (IJobQueueDataContext context = _contextFactory())
            {
                Job[] jobEntities = await context.Job.FromSql("dbo.GetJobByPriority @ResultCount={0}", resultCount).ToArrayAsync();

                foreach (Job jobEntity in jobEntities)
                {
                    jobs.Add(JobConverter.Convert(jobEntity));
                }
            }

            return(jobs);
        }
Exemple #5
0
        public FileUploadJob GetLatestJobByUkprn(long ukprn, string collectionName)
        {
            var result = new FileUploadJob();

            using (var context = _contextFactory())
            {
                var entity = context.FileUploadJobMetaData
                             .Include(x => x.Job)
                             .Where(x => x.Ukprn == ukprn && x.CollectionName.Equals(collectionName, StringComparison.CurrentCultureIgnoreCase))
                             .OrderByDescending(x => x.Job.DateTimeSubmittedUtc)
                             .FirstOrDefault();

                JobConverter.Convert(entity, result);
            }

            return(result);
        }
        public async Task <Jobs.Model.Job> GetJobById(long jobId)
        {
            if (jobId == 0)
            {
                throw new ArgumentException("Job id can not be 0");
            }

            using (IJobQueueDataContext context = _contextFactory())
            {
                var entity = await context.Job.SingleOrDefaultAsync(x => x.JobId == jobId);

                if (entity == null)
                {
                    throw new ArgumentException($"Job id {jobId} does not exist");
                }

                var job = new Jobs.Model.Job();
                JobConverter.Convert(entity, job);
                return(job);
            }
        }
Exemple #7
0
        public async Task <FileUploadJob> GetJobById(long jobId)
        {
            if (jobId == 0)
            {
                throw new ArgumentException("Job id can not be 0");
            }

            using (var context = _contextFactory())
            {
                var entity = await context.FileUploadJobMetaData.Include(x => x.Job).SingleOrDefaultAsync(x => x.JobId == jobId);

                if (entity == null)
                {
                    throw new ArgumentException($"Job id {jobId} does not exist");
                }

                var job = new FileUploadJob();
                JobConverter.Convert(entity, job);
                return(job);
            }
        }
Exemple #8
0
        public async Task <FileUploadJob> GetLatestJobByUkprnAndContractReference(long ukprn, string contractReference,
                                                                                  string collectionName)
        {
            var result = new FileUploadJob();
            var fileNameSearchQuery = $"{ukprn}/SUPPDATA-{ukprn}-{contractReference}-";

            using (var context = _contextFactory())
            {
                var entity = await context.FileUploadJobMetaData
                             .Include(x => x.Job)
                             .Where(
                    x => x.Ukprn == ukprn &&
                    x.CollectionName.Equals(collectionName, StringComparison.CurrentCultureIgnoreCase) &&
                    x.FileName.StartsWith(fileNameSearchQuery))
                             .OrderByDescending(x => x.Job.DateTimeSubmittedUtc)
                             .FirstOrDefaultAsync();

                JobConverter.Convert(entity, result);
            }

            return(result);
        }