示例#1
0
        void batchDeleteCommand()
        {
            var dialog = this.ShowDialog("提示信息", "确认删除?", CustomControl.Enums.DialogSettingType.OkAndCancel, CustomControl.Enums.DialogType.Warning);

            if (dialog == CustomControl.Enums.DialogResultType.OK)
            {
                // 验证是否确认删除?
                var toDeleteTeachers = this.Teachers.Where(t => t.IsChecked)?.ToList();

                if (toDeleteTeachers != null)
                {
                    foreach (var t in toDeleteTeachers)
                    {
                        // 更新UI
                        this.Teachers.Remove(t);
                        // 移除教师
                        _cpcase.Teachers.RemoveAll(teacher => teacher.ID.Equals(t.ID));

                        AdministrativeDataHelper.TeacherChanged(t, base.LocalID, CommonDataManager);

                        // 移除教师
                        GalaSoft.MvvmLight.Messaging.Messenger.Default.Send <UITeacher>(t);
                    }

                    // 保存
                    _cpcase.Serialize(base.LocalID);
                }
            }
        }
        void batchDeleteCommand()
        {
            var hasCheckedCourse = this.Courses.Any(c => c.IsChecked);

            if (!hasCheckedCourse)
            {
                this.ShowDialog("提示信息", "没有选中要删除的课程!", CustomControl.Enums.DialogSettingType.OnlyOkButton, CustomControl.Enums.DialogType.Warning);
                return;
            }

            var confirm = this.ShowDialog("提示信息", "确定删除选中课程?", CustomControl.Enums.DialogSettingType.OkAndCancel, CustomControl.Enums.DialogType.Warning);

            if (confirm == CustomControl.Enums.DialogResultType.OK)
            {
                // 验证是否确认删除?
                var toDeletes = this._toDeleteCourses.Count == 0 ? this.Courses.Where(t => t.IsChecked)?.ToList() : this._toDeleteCourses.Where(t => t.IsChecked);
                if (toDeletes != null)
                {
                    var local = CommonDataManager.GetLocalCase(base.LocalID);

                    foreach (var t in toDeletes)
                    {
                        // 更新UI
                        this.Courses.Remove(t);

                        _cpcase.Courses.RemoveAll(c => c.ID.Equals(t.ID));
                        _cpcase.Classes?.ForEach(c =>
                        {
                            c.Settings?.RemoveAll(cs => cs.CourseID.Equals(t.ID));
                        });

                        // 移除颜色
                        local.CourseColors.Remove(t.ID);

                        // 移除课程
                        GalaSoft.MvvmLight.Messaging.Messenger.Default.Send <UICourse>(t);

                        AdministrativeDataHelper.CourseChanged(t, base.LocalID, CommonDataManager);
                    }
                    // 保存
                    _cpcase.Serialize(base.LocalID);
                    local.Serialize();
                }
            }
        }
        void saveCommand()
        {
            var showConfirm = IsClearRules();

            if (showConfirm)
            {
                StringBuilder information = new StringBuilder();
                information.AppendLine("数据发生改变,保存后会清除课时相关规则,是否确认修改?");
                var confirm = this.ShowDialog("提示信息", information.ToString(), CustomControl.Enums.DialogSettingType.OkAndCancel, CustomControl.Enums.DialogType.Warning);
                if (confirm != CustomControl.Enums.DialogResultType.OK)
                {
                    return;
                }

                AdministrativeDataHelper.ClassHourChanged(base.LocalID, CommonDataManager);
            }

            var cp = CommonDataManager.GetCPCase(base.LocalID);

            // 删除班级
            removeClasses.ForEach(rc =>
            {
                cp.Classes.RemoveAll(dc => dc.ID.Equals(rc.ID));
            });
            removeClasses.Clear();

            foreach (var c in this.Classes)
            {
                // 1.班级
                var model = new XYKernel.OS.Common.Models.Administrative.ClassModel()
                {
                    ID   = c.ID,
                    Name = c.Name,
                };

                var sourceClass = cp.Classes.FirstOrDefault(cc => cc.ID.Equals(c.ID));
                if (sourceClass != null)
                {
                    model.Students = sourceClass.Students;
                    cp.Classes.Remove(sourceClass);
                }

                // 2.课程
                foreach (var cc in c.Courses)
                {
                    var ccModel = new XYKernel.OS.Common.Models.Administrative.ClassCourseModel()
                    {
                        CourseID   = cc.CourseID,
                        Lessons    = cc.Lessons,
                        TeacherIDs = cc.Teachers.Select(s => s.ID)?.ToList(),
                    };
                    model.Settings.Add(ccModel);
                }

                cp.Classes.Add(model);
            }

            #region 生成课时

            var hours = (from c in this.Classes
                         from cc in c.Courses
                         from hour in cc.ClassHours
                         select new
            {
                ClassID = c.ID,
                CourseID = cc.CourseID,
                Teachers = hour.Teachers?.Select(t => t.ID)?.ToList()
            })?.ToList();


            cp.ClassHours.Clear();
            int no = 0;
            hours.ForEach(h =>
            {
                cp.ClassHours.Add(new XYKernel.OS.Common.Models.Administrative.ClassHourModel
                {
                    ID         = ++no,
                    ClassID    = h.ClassID,
                    CourseID   = h.CourseID,
                    TeacherIDs = h.Teachers
                });
            });

            #endregion

            // 3.保存
            cp.Serialize(base.LocalID);

            this.ShowDialog("提示信息", "保存成功!", CustomControl.Enums.DialogSettingType.NoButton, CustomControl.Enums.DialogType.None);
        }