public ActionResult Create(ScheduledJobViewModel vm) { if (ModelState.IsValid) { var jobInfo = new JobInfoModel { JobType = "Scheduled", CronExpression = vm.CronExpression, Url = vm.Url }; var newScheduledJob = new ScheduledJob { Name = vm.Name, JobInfo = JsonConvert.SerializeObject(jobInfo) }; _db.ScheduledJobs.Add(newScheduledJob); _db.SaveChanges(); try { // Create Hangfire Job RecurringJob.AddOrUpdate(vm.Name, () => WebClientHelper.InvokeUrl(vm.Url), vm.CronExpression); return(RedirectToAction("Index")); } catch (Exception ex) { ViewBag.jobException = "Invalid cron expression"; } } return(View(vm)); }
///<summary> ///Obtiene una lista de tareas programadas ///</summary> /// <param name="from">número desde el cual se va a traer las tareas del listado, por defecto 0 para empezar a traer desde el primer elemento de la lista de tareas</param> /// <param name="count">número máximo de tareas a traer</param> public List <ScheduledJobViewModel> GetScheduledJobs(int from, int count) { var api = JobStorage.Current.GetMonitoringApi(); JobList <ScheduledJobDto> listScheduled = api.ScheduledJobs(from, count); List <ScheduledJobViewModel> listScheduledViewModel = new List <ScheduledJobViewModel>(); foreach (var scheduled in listScheduled) { string jobString = ""; if (scheduled.Value.Job != null) { jobString = scheduled.Value.Job.ToString(); } ScheduledJobViewModel scheduledViewModel = new ScheduledJobViewModel() { Key = scheduled.Key, EnqueueAt = scheduled.Value.EnqueueAt, InScheduledState = scheduled.Value.InScheduledState, Job = jobString, ScheduledAt = scheduled.Value.ScheduledAt }; listScheduledViewModel.Add(scheduledViewModel); } return(listScheduledViewModel); }
public ActionResult Create() { var vm = new ScheduledJobViewModel { }; return(View(vm)); }