/// <summary> /// 绑定锁定状态 /// </summary> /// <param name="lockedItem"></param> void bindLockedState(UILockedItem lockedItem) { var firstClass = _classes.FirstOrDefault(c => c.Name.Equals(lockedItem.Class)); if (firstClass == null) { return; } var lockedClass = _lockedRule.LockedTimeTable?.FirstOrDefault(lt => lt.ClassID.Equals(firstClass.ID)); if (lockedClass == null) { return; } if (lockedClass.LockedCourseTimeTable == null) { return; } var has = lockedClass.LockedCourseTimeTable.Any(lt => lt.LockedTimes.Any(t => t.Day == lockedItem.DayPeriod.Day && t.Period == lockedItem.DayPeriod.Period)); lockedItem.Locked = has; }
void UnLockedTeacher(object obj) { UILockedItem lockedItem = obj as UILockedItem; var teachers = (from d in lockedItem.Details from t in d.Teachers select t); if (teachers.Count() == 0) { this.ShowDialog("提示信息", "没有可用教师!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } // 更新当前界面 var filters = this._currentLockedItems.Where(i => i.Details.Any(d => d.Teachers.Any(dt => teachers.Contains(dt)))); if (filters != null) { foreach (var f in filters) { f.Locked = false; } } // 填充数据 var results = (from c in _resultClasses from rc in c.ResultDetails select new { c.ClassID, rc }).Where(r => r.rc.Teachers.Any(t => teachers.Contains(t))); if (results != null) { foreach (var r in results) { if (r.rc.Teachers.Count == 0) { continue; } var firstClass = _classes.FirstOrDefault(c => c.ID.Equals(r.ClassID)); if (firstClass != null) { UILockedItem item = new UILockedItem() { DayPeriod = r.rc.DayPeriod, Class = firstClass?.Name, Details = new List <ResultDetailModel>() { r.rc } }; this.UnLocked(item); } } } }
void UnLocked(object obj) { var cp = CommonDataManager.GetCPCase(base.LocalID); // 取消锁定 UILockedItem lockedItem = obj as UILockedItem; // 获取规则信息方式。 var firstClass = _classes.FirstOrDefault(c => c.Name.Equals(lockedItem.Class)); if (firstClass == null) { this.ShowDialog("提示信息", "没有找到班级信息!数据错误!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } var lockedClass = _lockedRule.LockedTimeTable?.FirstOrDefault(l => l.ClassID.Equals(firstClass.ID)); if (lockedClass != null) { lockedItem.Details.ForEach(c => { var courseModel = _resultModel.Courses.FirstOrDefault(cc => cc.ID.Equals(c.CourseID)); var localCourseModel = cp.Courses.FirstOrDefault(cc => cc.Name.Equals(courseModel.Name)); // 检查科目 if (localCourseModel == null) { this.ShowDialog("提示信息", "没有找到该科目,确认基础数据是否改变!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } var course = lockedClass.LockedCourseTimeTable?.FirstOrDefault(lc => lc.CourseID.Equals(c.CourseID)); if (course != null) { var has = course.LockedTimes.Any(lt => lt.Day == lockedItem.DayPeriod.Day && lt.Period == lockedItem.DayPeriod.Period); if (has) { course.LockedTimes.RemoveAll(rt => rt.Day == lockedItem.DayPeriod.Day && rt.Period == lockedItem.DayPeriod.Period); if (course.LockedTimes.Count == 0) { lockedClass.LockedCourseTimeTable.Remove(course); if (lockedClass.LockedCourseTimeTable.Count == 0) { _lockedRule.LockedTimeTable.Remove(lockedClass); } } } } }); lockedItem.Locked = false; } }
void LockedCourse(object obj) { UILockedItem lockedItem = obj as UILockedItem; lockedItem.Details.ForEach(d => { var items = this._currentLockedItems.Where(si => si.Details.Any(dt => dt.CourseID.Equals(d.CourseID))); if (items != null) { foreach (var i in items) { Locked(i); } } }); }
void Locked(object obj) { var cp = CommonDataManager.GetCPCase(base.LocalID); // 锁定 UILockedItem lockedItem = obj as UILockedItem; lockedItem.Locked = true; // 获取规则信息方式。 var firstClass = _classes.FirstOrDefault(c => c.Name.Equals(lockedItem.Class)); if (firstClass == null) { this.ShowDialog("提示信息", "没有找到班级信息!数据错误!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } var lockedClass = _lockedRule.LockedTimeTable?.FirstOrDefault(l => l.ClassID.Equals(firstClass.ID)); if (lockedClass == null) { LockedClassTimeTable table = new LockedClassTimeTable(); table.ClassID = firstClass.ID; table.LockedCourseTimeTable = new List <LockedClassCourseTimeTable>(); lockedItem.Details.ForEach(d => { LockedClassCourseTimeTable courseTable = new LockedClassCourseTimeTable(); courseTable.CourseID = d.CourseID; courseTable.LockedTimes = new List <DayPeriodModel>() { d.DayPeriod }; table.LockedCourseTimeTable.Add(courseTable); }); if (_lockedRule.LockedTimeTable == null) { _lockedRule.LockedTimeTable = new List <LockedClassTimeTable>(); } _lockedRule.LockedTimeTable.Add(table); } else { var classInfo = cp.Classes.FirstOrDefault(cc => cc.Name.Equals(lockedItem.Class)); if (classInfo == null) { this.ShowDialog("提示信息", "没有找到班级,确认基础数据是否改变!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } lockedItem.Details.ForEach(c => { var courseModel = _resultModel.Courses.FirstOrDefault(cc => cc.ID.Equals(c.CourseID)); var localCourseModel = cp.Courses.FirstOrDefault(cc => cc.Name.Equals(courseModel.Name)); // 检查科目 if (localCourseModel == null) { this.ShowDialog("提示信息", "没有找到该科目,确认基础数据是否改变!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning); return; } var course = lockedClass.LockedCourseTimeTable?.FirstOrDefault(lc => lc.CourseID.Equals(localCourseModel.ID)); if (course == null) { LockedClassCourseTimeTable courseTimeTable = new LockedClassCourseTimeTable() { CourseID = localCourseModel.ID, LockedTimes = new List <DayPeriodModel>() { new DayPeriodModel() { Day = lockedItem.DayPeriod.Day, Period = lockedItem.DayPeriod.Period, PeriodName = lockedItem.DayPeriod.PeriodName } } }; lockedClass.LockedCourseTimeTable.Add(courseTimeTable); } else { var has = course.LockedTimes.Any(lt => lt.Day == lockedItem.DayPeriod.Day && lt.Period == lockedItem.DayPeriod.Period); if (!has) { course.LockedTimes.Add(new DayPeriodModel() { Day = lockedItem.DayPeriod.Day, Period = lockedItem.DayPeriod.Period, PeriodName = lockedItem.DayPeriod.PeriodName }); } } }); } }
StackPanel createStackPanel(string courseID, UILockedItem lockedItem) { var solidColorBrush = this.GetRandomColor(courseID); StackPanel sp = new StackPanel(); sp.Background = solidColorBrush; sp.Margin = new Thickness(15); sp.DataContext = lockedItem; ContextMenu contextMenu = new ContextMenu(); MenuItem lockMenuItem = new MenuItem() { Header = "锁定", Command = LockedCommand, CommandParameter = sp.DataContext }; MenuItem unlockMenuItem = new MenuItem() { Header = "取消锁定", Command = UnLockedCommand, CommandParameter = sp.DataContext }; MenuItem lockCourseMenuItem = new MenuItem() { Header = "锁定科目", Command = LockedCourseCommand, CommandParameter = sp.DataContext }; MenuItem unlockCourseMenuItem = new MenuItem() { Header = "取消锁定科目", Command = UnLockedCourseCommand, CommandParameter = sp.DataContext }; MenuItem lockTeacherMenuItem = new MenuItem() { Header = "锁定教师", Command = LockedTeacherCommand, CommandParameter = sp.DataContext }; MenuItem unlockTeacherMenuItem = new MenuItem() { Header = "取消锁定教师", Command = UnLockedCourseCommand, CommandParameter = sp.DataContext }; contextMenu.Items.Add(lockMenuItem); contextMenu.Items.Add(unlockMenuItem); contextMenu.Items.Add(new Separator()); contextMenu.Items.Add(lockCourseMenuItem); contextMenu.Items.Add(unlockCourseMenuItem); contextMenu.Items.Add(new Separator()); contextMenu.Items.Add(lockTeacherMenuItem); contextMenu.Items.Add(unlockTeacherMenuItem); sp.ContextMenu = contextMenu; return(sp); }