public virtual BackgroundJobModel PrepareBackgroundJobModel(RecurringJobDto job, HashSet <string> pausedJobs) { var result = new BackgroundJobModel(); if (job == null) { return(result); } result.Id = job.Id; result.Job = job.Job.ToString(); result.TimeZoneId = job.TimeZoneId; result.Cron = job.Cron; result.NextExecution = job.NextExecution?.ToLocalTime().ToString("F") ?? "-"; result.LastExecution = job.LastExecution?.ToLocalTime().ToString("F") ?? "-"; result.LastExecutionState = job.LastJobState; result.LastJobId = job.LastJobId; result.CronDesc = ExpressionDescriptor.GetDescription(job.Cron); result.Paused = pausedJobs.Contains(job.Id); return(result); }
public virtual ActionResult Editor(BackgroundJobModel model, bool?saveAndContinue) { if (!ModelState.IsValid) { return(View(model)); } try { using (var connection = JobStorage.Current.GetConnection()) { var record = connection.GetRecurringJobs().FirstOrDefault(p => p.Id == model.Id); if (record != null) { new RecurringJobManager(JobStorage.Current).AddOrUpdate(record.Id, record.Job, model.Cron, TimeZoneInfo.FindSystemTimeZoneById(model.TimeZoneId)); } } } catch (Exception e) { var errorCode = ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(new Error(e, System.Web.HttpContext.Current)); ModelState.AddModelError("", string.Format(_localizationService.GetResource("ErrorOnOperation"), e.Message, errorCode)); return(View(model)); } if (saveAndContinue != null && saveAndContinue.Value) { return(RedirectToAction("Editor", "ManageBackgroundJobs", new { id = model.Id })); } return(Content(@"<script language='javascript' type='text/javascript'> window.close(); window.opener.refreshBgJobsGrid(); </script>")); }