Ejemplo n.º 1
0
        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>"));
        }