public async Task <RatingJob> Insert(RatingJob job) { await _context.RatingJobs.AddAsync(job); await _context.SaveChangesAsync(); return(job); }
public async Task <IActionResult> Run(int iterations, string type) { var running = await _jobService.AlgorithmIsRunning(); if (running) { return(StatusCode(409, "Algorithm is already running")); } var ratingJob = new RatingJob { JobId = 0, StartTime = DateTime.Now, }; int jobId; switch (type) { case "singles": ratingJob.Type = "Algorithm.Singles"; await _ratingJobRepository.Insert(ratingJob); var singlesInstance = (Algorithm)_serviceProvider.GetService(typeof(Algorithm)); jobId = int.Parse(BackgroundJob.Enqueue(() => singlesInstance.UpdateRating(iterations, false, ratingJob.Id))); break; case "doubles": ratingJob.Type = "Algorithm.Doubles"; await _ratingJobRepository.Insert(ratingJob); var doublesInstance = (AlgorithmDoubles)_serviceProvider.GetService(typeof(AlgorithmDoubles)); jobId = int.Parse(BackgroundJob.Enqueue(() => doublesInstance.UpdateRating(iterations, null, ratingJob.Id))); break; default: return(StatusCode(400, "Type must be singles or doubles")); } ratingJob.JobId = jobId; await _ratingJobRepository.Update(ratingJob); return(StatusCode(200, "Algorithm started")); }
public async Task Update(RatingJob job) { _context.RatingJobs.Update(job); await _context.SaveChangesAsync(); }