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 })); }
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 })); }