public bool SaveData() { if (!ValidateData()) { return(false); } var settings = new AdvantShop.Core.Scheduler.TaskSettings(); var item = new TaskSetting(); //html item.Enabled = chbEnabledHtml.Checked; item.JobType = typeof(GenerateHtmlMapJob).ToString(); item.TimeInterval = txtTimeIntervalHtml.Text.TryParseInt(); item.TimeType = (TimeIntervalType)Enum.Parse(typeof(TimeIntervalType), ddlTypeHtml.SelectedValue, true); if (item.TimeType == TimeIntervalType.Days) { item.TimeHours = txtHoursHtml.Text.TryParseInt(); item.TimeMinutes = txtMinutesHtml.Text.TryParseInt(); } settings.Add(item); //xml item = new TaskSetting(); item.Enabled = chbEnabledXml.Checked; item.JobType = typeof(GenerateXmlMapJob).ToString(); item.TimeInterval = txtTimeIntervalXml.Text.TryParseInt(); item.TimeType = (TimeIntervalType)Enum.Parse(typeof(TimeIntervalType), ddlTypeXml.SelectedValue, true); if (item.TimeType == TimeIntervalType.Days) { item.TimeHours = txtHoursXml.Text.TryParseInt(); item.TimeMinutes = txtMinutesXml.Text.TryParseInt(); } settings.Add(item); //yandex item = new TaskSetting(); item.Enabled = chbEnabledYandex.Checked; item.JobType = typeof(GenerateYandexMarketJob).ToString(); item.TimeInterval = txtTimeIntervalYandex.Text.TryParseInt(); item.TimeType = (TimeIntervalType)Enum.Parse(typeof(TimeIntervalType), ddlTypeYandex.SelectedValue, true); if (item.TimeType == TimeIntervalType.Days) { item.TimeHours = txtHoursYandex.Text.TryParseInt(); item.TimeMinutes = txtMinutesYandex.Text.TryParseInt(); } settings.Add(item); //googlebase item = new TaskSetting(); item.Enabled = chbEnabledGoogleBase.Checked; item.JobType = typeof(GenerateGoogleBaseJob).ToString(); item.TimeInterval = txtTimeIntervalGoogleBase.Text.TryParseInt(); item.TimeType = (TimeIntervalType)Enum.Parse(typeof(TimeIntervalType), ddlTypeGoogleBase.SelectedValue, true); if (item.TimeType == TimeIntervalType.Days) { item.TimeHours = txtHoursGoogleBase.Text.TryParseInt(); item.TimeMinutes = txtMinutesGoogleBase.Text.TryParseInt(); } settings.Add(item); AdvantShop.Core.Scheduler.TaskSettings.Settings = settings; TaskManager.TaskManagerInstance().ManagedTask(settings); LoadData(); return(true); }
public void ManagedTask(TaskSettings settings) { foreach (var setting in settings) { _sched.DeleteJob(new JobKey(setting.JobType, TaskGroup)); if (setting.Enabled) { if (string.IsNullOrEmpty(setting.JobType)) { continue; } var taskType = Type.GetType(setting.JobType); if (taskType == null) { continue; } if (_sched.CheckExists(new JobKey(setting.JobType, TaskGroup))) { continue; } var jobDetail = new JobDetailImpl(setting.JobType, TaskGroup, taskType); jobDetail.JobDataMap[DataMap] = setting; var cronExpression = GetCronString(setting); if (string.IsNullOrEmpty(cronExpression)) { continue; } var trigger = new CronTriggerImpl(setting.JobType, TaskGroup, setting.JobType, TaskGroup, cronExpression); _sched.ScheduleJob(jobDetail, trigger); } } var moduleTasks = AttachedModules.GetModules <IModuleTask>(); foreach (var moduleTask in moduleTasks) { var classInstance = (IModuleTask)Activator.CreateInstance(moduleTask, null); var tasksSettings = classInstance.GetTasks(); foreach (var setting in tasksSettings) { _sched.DeleteJob(new JobKey(setting.JobType, ModuleGroup)); if (setting.Enabled) { var type = Type.GetType(setting.JobType); if (type == null) { continue; } var cronExpression = GetCronString(setting); if (string.IsNullOrEmpty(cronExpression)) { continue; } var jobDetail = new JobDetailImpl(setting.JobType, ModuleGroup, type); jobDetail.JobDataMap[DataMap] = setting; var trigger = new CronTriggerImpl(setting.JobType, ModuleGroup, setting.JobType, ModuleGroup, cronExpression); _sched.ScheduleJob(jobDetail, trigger); } } } }