public void ProcessJobs() { IJobsRepository jobsRepository = new JobsRepository(_ctx); var allJobs = jobsRepository.GetAllJobs(); var jobsToProcess = allJobs.Where(x => x.Status == JobStatus.New).ToList(); jobsToProcess.ForEach(job => job.ChangeStatus(JobStatus.InProgress)); _ctx.SaveChanges(); Parallel.ForEach(jobsToProcess, (currentjob) => { new Task(async() => { bool result = await this.ProcessJob(currentjob).ConfigureAwait(false); if (result) { currentjob.ChangeStatus(JobStatus.Done); } else { _ctx.SaveChanges(); currentjob.ChangeStatus(JobStatus.Failed); } }).Start(); }); _ctx.SaveChanges(); }
// GET: Tasks public ActionResult Index() { using (ZavenDotNetInterviewContext _ctx = new ZavenDotNetInterviewContext()) { JobsRepository jobsRepository = new JobsRepository(_ctx); List <Job> jobs = jobsRepository.GetAllJobs(); return(View(jobs)); } }
// GET: Home public ActionResult Index() { JobsRepository jobsIO = new JobsRepository(); return(View(jobsIO.GetAllJobs())); }