Пример #1
0
        public async Task <IActionResult> Edit(string name, string group, bool clone = false)
        {
            if (!EnsureValidKey(name, group))
            {
                return(BadRequest());
            }

            var jobKey = JobKey.Create(name, group);
            var job    = await GetJobDetail(jobKey);

            var jobModel = new JobPropertiesViewModel()
            {
            };
            var jobDataMap = new JobDataMapModel()
            {
                Template = JobDataMapItemTemplate
            };

            jobModel.IsNew     = clone;
            jobModel.IsCopy    = clone;
            jobModel.JobName   = name;
            jobModel.Group     = group;
            jobModel.GroupList = (await Scheduler.GetJobGroupNames()).GroupArray();

            jobModel.Type     = job.JobType.RemoveAssemblyDetails();
            jobModel.TypeList = Services.Cache.JobTypes;

            jobModel.Description = job.Description;
            jobModel.Recovery    = job.RequestsRecovery;

            if (clone)
            {
                jobModel.JobName += " - Copy";
            }

            var jobData = job.GetJobDataMapModel(Services);

            var customData = jobData.Where(x => x.Name == "CustomData").FirstOrDefault();

            if (customData != null)
            {
                jobModel.CustomFormDataJsonModel = customData.Value.ToString();

                //jobData.Remove(customData);
            }

            jobDataMap.Items.AddRange(jobData);

            return(View("Edit", new { Job = jobModel, DataMap = jobDataMap }));
        }
Пример #2
0
        public async Task <IActionResult> New()
        {
            var model = await TriggerPropertiesViewModel.Create(Scheduler);

            var jobDataMap = new JobDataMapModel {
                Template = JobDataMapItemTemplate
            };

            model.IsNew = true;

            model.Type     = TriggerType.Cron;
            model.Priority = 5;

            return(View("Edit", new TriggerViewModel {
                Trigger = model, DataMap = jobDataMap
            }));
        }
Пример #3
0
        public async Task <IActionResult> New()
        {
            var job = new JobPropertiesViewModel {
                IsNew = true
            };
            var jobDataMap = new JobDataMapModel {
                Template = JobDataMapItemTemplate
            };

            job.GroupList = (await Scheduler.GetJobGroupNames()).GroupArray();
            job.Group     = SchedulerConstants.DefaultGroup;
            job.TypeList  = Services.Cache.JobTypes;

            return(View("Edit", new JobViewModel {
                Job = job, DataMap = jobDataMap
            }));
        }
Пример #4
0
        public async Task <IActionResult> Trigger(string name, string group)
        {
            if (!EnsureValidKey(name, group))
            {
                return(BadRequest());
            }

            var jobKey = JobKey.Create(name, group);
            var job    = await GetJobDetail(jobKey);

            var jobDataMap = new JobDataMapModel {
                Template = JobDataMapItemTemplate
            };

            ViewBag.JobName = name;
            ViewBag.Group   = group;

            jobDataMap.Items.AddRange(job.GetJobDataMapModel(Services));

            return(View(jobDataMap));
        }
Пример #5
0
        public async Task <IActionResult> Edit(string name, string group, bool clone = false)
        {
            if (!EnsureValidKey(name, group))
            {
                return(BadRequest());
            }

            var key     = new TriggerKey(name, group);
            var trigger = await GetTrigger(key);

            var jobDataMap = new JobDataMapModel()
            {
                Template = JobDataMapItemTemplate
            };

            var model = await TriggerPropertiesViewModel.Create(Scheduler);

            model.IsNew           = clone;
            model.IsCopy          = clone;
            model.Type            = trigger.GetTriggerType();
            model.Job             = trigger.JobKey.ToString();
            model.TriggerName     = trigger.Key.Name;
            model.TriggerGroup    = trigger.Key.Group;
            model.OldTriggerName  = trigger.Key.Name;
            model.OldTriggerGroup = trigger.Key.Group;

            if (clone)
            {
                model.TriggerName += " - Copy";
            }

            // don't show start time in the past because rescheduling cause triggering missfire policies
            model.StartTimeUtc = trigger.StartTimeUtc > DateTimeOffset.UtcNow ? trigger.StartTimeUtc.UtcDateTime.ToDefaultFormat() : null;

            model.EndTimeUtc = trigger.EndTimeUtc?.UtcDateTime.ToDefaultFormat();

            model.CalendarName = trigger.CalendarName;
            model.Description  = trigger.Description;
            model.Priority     = trigger.Priority;

            model.MisfireInstruction = trigger.MisfireInstruction;

            switch (model.Type)
            {
            case TriggerType.Cron:
                model.Cron = CronTriggerViewModel.FromTrigger((ICronTrigger)trigger);
                break;

            case TriggerType.Simple:
                model.Simple = SimpleTriggerViewModel.FromTrigger((ISimpleTrigger)trigger);
                break;

            case TriggerType.Daily:
                model.Daily = DailyTriggerViewModel.FromTrigger((IDailyTimeIntervalTrigger)trigger);
                break;

            case TriggerType.Calendar:
                model.Calendar = CalendarTriggerViewModel.FromTrigger((ICalendarIntervalTrigger)trigger);
                break;

            default:
                throw new InvalidOperationException("Unsupported trigger type: " + trigger.GetType().AssemblyQualifiedName);
            }

            jobDataMap.Items.AddRange(trigger.GetJobDataMapModel(Services));

            return(View("Edit", new TriggerViewModel()
            {
                Trigger = model, DataMap = jobDataMap
            }));
        }