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
            }));
        }
Beispiel #2
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
            }));
        }