public IActionResult RunNow(string scheduledTaskSystemName)
        {
            if (scheduledTaskSystemName.IsNullEmptyOrWhiteSpace())
            {
                return(BadRequest());
            }
            var scheduledTask = _scheduledTaskService.FirstOrDefault(x => x.SystemName == scheduledTaskSystemName);
            var iTask         = DependencyResolver.Resolve <ITask>(scheduledTaskSystemName);

            try
            {
                ScheduledTaskHelper.RunScheduledTask(scheduledTask, iTask, _scheduledTaskService, _logger, false);
            }
            catch (Exception)
            {
                return(R.Fail.With("error",
                                   T("An error occurred while running the task. Please check the log for details")).Result);
            }
            return(R.Success.Result);
        }
Exemple #2
0
        public void Start()
        {
            //only start tasks if we have db installed
            if (!DatabaseManager.IsDatabaseInstalled())
            {
                return;
            }
            var availableTasks = DependencyResolver.ResolveMany <ITask>().ToList();
            var scheduledTasks = _scheduledTaskService.Get(x => true).ToList();

            //first sync available tasks and database tasks
            UpdateTasksInDatabase(availableTasks, scheduledTasks);
            if (!scheduledTasks.Any(x => x.Enabled))
            {
                return;
            }
            var registry = new Registry();

            //add each enabled task to the scheduler
            foreach (var sTask in scheduledTasks.Where(x => x.Enabled))
            {
                var task = availableTasks.FirstOrDefault(x => x.SystemName == sTask.SystemName);
                if (task == null)
                {
                    continue;
                }

                if (sTask.Seconds < 10)
                {
                    sTask.Seconds = 10;
                }
                //schedule the task
                registry.Schedule(() =>
                {
                    ScheduledTaskHelper.RunScheduledTask(sTask, task, _scheduledTaskService, _logger);
                }).ToRunEvery(sTask.Seconds).Seconds();
            }
            //initialize the jobmanager
            JobManager.Initialize(registry);
        }