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