示例#1
0
        private void AddPolicy(object parameter)
        {
            if (CheckDayOfWeek())
            {
                return;
            }

            CurrentPolicy.SelectedTime = (DateTime)parameter;//通过绑定无法获取到值 原因不明
            BackUpPolicy policy = Policys.FirstOrDefault(x => x.BackUpType == CurrentPolicy.BackUpType);

            if (policy == null)
            {
                Policys.Add(new BackUpPolicy()
                {
                    Sunday    = CurrentPolicy.Sunday,
                    Monday    = CurrentPolicy.Monday,
                    Tuesday   = CurrentPolicy.Tuesday,
                    Wednesday = CurrentPolicy.Wednesday,
                    Thursday  = CurrentPolicy.Thursday,
                    Friday    = CurrentPolicy.Friday,
                    Saturday  = CurrentPolicy.Saturday,

                    SelectedTime         = CurrentPolicy.SelectedTime,
                    IsTaskBackUpDataBase = CurrentPolicy.IsTaskBackUpDataBase,
                    IsTaskBackUpTables   = CurrentPolicy.IsTaskBackUpTables,
                    ItemString           = CurrentPolicy.PolicyToString
                });

                Notice.Show("策略已添加成功", "通知");
            }
            else
            {
                policy.Sunday               = CurrentPolicy.Sunday;
                policy.Monday               = CurrentPolicy.Monday;
                policy.Tuesday              = CurrentPolicy.Tuesday;
                policy.Wednesday            = CurrentPolicy.Wednesday;
                policy.Thursday             = CurrentPolicy.Thursday;
                policy.Friday               = CurrentPolicy.Friday;
                policy.Saturday             = CurrentPolicy.Saturday;
                policy.SelectedTime         = CurrentPolicy.SelectedTime;
                policy.IsTaskBackUpDataBase = CurrentPolicy.IsTaskBackUpDataBase;
                policy.IsTaskBackUpTables   = CurrentPolicy.IsTaskBackUpTables;
                policy.ItemString           = CurrentPolicy.PolicyToString;

                Notice.Show("策略已更新成功", "通知", 3, MessageBoxIcon.Success);
            }

            if (CurrentPolicy.BackUpType == BackUpType.DataBase)
            {
                ConfigHelper.WriterAppConfig("DataBaseBackUpJob", ConvertToCron(CurrentPolicy));
            }
            else
            {
                ConfigHelper.WriterAppConfig("TablesBackUpJob", ConvertToCron(CurrentPolicy));
            }

            WriteConfig();
        }
        private void AddPolicy(object parameter)
        {
            if (CheckDayOfWeek())
            {
                return;
            }

            CurrentPolicy.SelectedTime = (DateTime)parameter;//通过绑定无法获取到值 原因不明
            BackUpPolicy policy = Policys.FirstOrDefault(x => x.Id == CurrentPolicy.Id);

            if (policy == null)
            {
                Policys.Add(new BackUpPolicy()
                {
                    Id                   = Guid.NewGuid().ToString(),
                    Sunday               = CurrentPolicy.Sunday,
                    Monday               = CurrentPolicy.Monday,
                    Tuesday              = CurrentPolicy.Tuesday,
                    Wednesday            = CurrentPolicy.Wednesday,
                    Thursday             = CurrentPolicy.Thursday,
                    Friday               = CurrentPolicy.Friday,
                    Saturday             = CurrentPolicy.Saturday,
                    SelectedTime         = CurrentPolicy.SelectedTime,
                    IsTaskBackUpDataBase = CurrentPolicy.IsTaskBackUpDataBase,
                    IsTaskBackUpTables   = CurrentPolicy.IsTaskBackUpTables,
                    ItemString           = CurrentPolicy.PolicyToString,
                    DataBaseName         = CurrentPolicy.DataBaseName
                });
                Notice.Show("策略已添加成功", "通知", 3, MessageBoxIcon.Success);
            }
            else
            {
                policy.Id                   = CurrentPolicy.Id;
                policy.Sunday               = CurrentPolicy.Sunday;
                policy.Monday               = CurrentPolicy.Monday;
                policy.Tuesday              = CurrentPolicy.Tuesday;
                policy.Wednesday            = CurrentPolicy.Wednesday;
                policy.Thursday             = CurrentPolicy.Thursday;
                policy.Friday               = CurrentPolicy.Friday;
                policy.Saturday             = CurrentPolicy.Saturday;
                policy.SelectedTime         = CurrentPolicy.SelectedTime;
                policy.IsTaskBackUpDataBase = CurrentPolicy.IsTaskBackUpDataBase;
                policy.IsTaskBackUpTables   = CurrentPolicy.IsTaskBackUpTables;
                policy.ItemString           = CurrentPolicy.PolicyToString;
                policy.DataBaseName         = CurrentPolicy.DataBaseName;
                Notice.Show("策略已更新成功", "通知", 3, MessageBoxIcon.Success);
            }

            WritePolicyConfig();
            WriteTablesConfig(CurrentPolicy.DataBaseName);
        }
        private void RemovePolicy(object parameter)
        {
            BackUpPolicy policy = Policys.FirstOrDefault(x => x.Id == CurrentPolicy.Id);

            if (policy != null)
            {
                Policys.Remove(policy);
                manger.RemoveBackUpJobConfig(policy.Id);
                Clear();
                Notice.Show("策略已移除成功", "通知", 3, MessageBoxIcon.Success);
            }
            else
            {
                MessageBoxHelper.MessageBoxShowWarning("请选择你需要移除的策略");
            }
        }
        /// <summary>
        /// 校验周期中的星期几是否被占用
        /// 原则:避免同一天(只校验星期几,不校验时分秒)有多个策略,减少数据库压力。
        /// 修改前:由于最多只有两个策略(全库/业务表),所以只需判断周期中的某天是否存在两个一个类型的策略即可
        /// 修改后:由于可能存在多个库的多个策略,所以如果周期中的某天存在其他策略,即为占用。否则为未占用。
        /// </summary>
        /// <returns></returns>
        private bool CheckDayOfWeek()
        {
            if (!CurrentPolicy.Sunday &&
                !CurrentPolicy.Monday &&
                !CurrentPolicy.Monday &&
                !CurrentPolicy.Tuesday &&
                !CurrentPolicy.Wednesday &&
                !CurrentPolicy.Thursday &&
                !CurrentPolicy.Friday &&
                !CurrentPolicy.Saturday)
            {
                MessageBoxHelper.MessageBoxShowWarning("请至少选择一个周期!");
                return(true);
            }

            if (!CurrentPolicy.IsTaskBackUpDataBase && !CurrentPolicy.IsTaskBackUpTables)
            {
                MessageBoxHelper.MessageBoxShowWarning("请选择备份类型!");
                return(true);
            }

            BackUpPolicy policy;

            if (CurrentPolicy.Sunday)
            {
                policy = Policys.FirstOrDefault(x => x.Sunday &&
                                                x.DataBaseName == CurrentPolicy.DataBaseName);
                if (policy != null)
                {
                    if (policy.Id == CurrentPolicy.Id)//编辑
                    {
                        CurrentPolicy.Sunday = true;
                    }
                    else//新增
                    {
                        CurrentPolicy.Sunday = false;
                    }
                }
            }
            if (CurrentPolicy.Monday)
            {
                policy = Policys.FirstOrDefault(x => x.Monday &&
                                                x.DataBaseName == CurrentPolicy.DataBaseName);
                if (policy != null)
                {
                    if (policy.Id == CurrentPolicy.Id)//编辑
                    {
                        CurrentPolicy.Monday = true;
                    }
                    else//新增
                    {
                        CurrentPolicy.Monday = false;
                    }
                }
            }
            if (CurrentPolicy.Tuesday)
            {
                policy = Policys.FirstOrDefault(x => x.Tuesday &&
                                                x.DataBaseName == CurrentPolicy.DataBaseName);
                if (policy != null)
                {
                    if (policy.Id == CurrentPolicy.Id)//编辑
                    {
                        CurrentPolicy.Tuesday = true;
                    }
                    else//新增
                    {
                        CurrentPolicy.Tuesday = false;
                    }
                }
            }
            if (CurrentPolicy.Wednesday)
            {
                policy = Policys.FirstOrDefault(x => x.Wednesday &&
                                                x.DataBaseName == CurrentPolicy.DataBaseName);
                if (policy != null)
                {
                    if (policy.Id == CurrentPolicy.Id)//编辑
                    {
                        CurrentPolicy.Wednesday = true;
                    }
                    else//新增
                    {
                        CurrentPolicy.Wednesday = false;
                    }
                }
            }
            if (CurrentPolicy.Thursday)
            {
                policy = Policys.FirstOrDefault(x => x.Thursday &&
                                                x.DataBaseName == CurrentPolicy.DataBaseName);
                if (policy != null)
                {
                    if (policy.Id == CurrentPolicy.Id)//编辑
                    {
                        CurrentPolicy.Thursday = true;
                    }
                    else//新增
                    {
                        CurrentPolicy.Thursday = false;
                    }
                }
            }
            if (CurrentPolicy.Friday)
            {
                policy = Policys.FirstOrDefault(x => x.Friday &&
                                                x.DataBaseName == CurrentPolicy.DataBaseName);
                if (policy != null)
                {
                    if (policy.Id == CurrentPolicy.Id)//编辑
                    {
                        CurrentPolicy.Friday = true;
                    }
                    else//新增
                    {
                        CurrentPolicy.Friday = false;
                    }
                }
            }
            if (CurrentPolicy.Saturday)
            {
                policy = Policys.FirstOrDefault(x => x.Saturday &&
                                                x.DataBaseName == CurrentPolicy.DataBaseName);
                if (policy != null)
                {
                    if (policy.Id == CurrentPolicy.Id)//编辑
                    {
                        CurrentPolicy.Saturday = true;
                    }
                    else//新增
                    {
                        CurrentPolicy.Saturday = false;
                    }
                }
            }

            if (!CurrentPolicy.Sunday &&
                !CurrentPolicy.Monday &&
                !CurrentPolicy.Monday &&
                !CurrentPolicy.Tuesday &&
                !CurrentPolicy.Wednesday &&
                !CurrentPolicy.Thursday &&
                !CurrentPolicy.Friday &&
                !CurrentPolicy.Saturday)
            {
                MessageBoxHelper.MessageBoxShowWarning("已有策略占用了选定周期,请至少选择一个有效的周期!");
                return(true);
            }

            return(false);
        }