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); }