示例#1
0
        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);
        }
示例#2
0
        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);
                    }
                }
            }
        }