private void Saved(object o) { IsVisibility = false; if (Gr) { if (SelectedGroup.Title != "" && SelectedGroup.Title != Auto1 && SelectedGroup.Title != Auto2 && SelectedGroup.Title != Auto3 && MGroups.All(gr => gr.Title != SelectedGroup.Title)) { MGroups.Add(SelectedGroup); } else { Null = true; } } else { var b1 = SelectedTask.Group != "" && SelectedTask.Group != Auto1 && SelectedTask.Group != Auto2 && SelectedTask.Group != Auto3; var b2 = (SelectedTask.Status != TaskStatus.Completed || _chCom) && (SelectedTask.Status != TaskStatus.Canceled || _chCan); if (b1 && b2) { var grup = MGroups.FirstOrDefault(gr => gr.Title == SelectedTask.Group); if (grup == null) { grup = new Grup { Title = SelectedTask.Group }; MGroups.Add(grup); } grup.Tasks.Add(SelectedTask); Date(SelectedTask); } else if (b2) { Date(SelectedTask); SelectedTask.PropertyChanged -= Modify; SelectedTask.Group = ""; SelectedTask.PropertyChanged += Modify; MGroups.First(gr => gr.Title == Auto3).Tasks.Add(SelectedTask); } else if (b1) { if (MGroups.All(g => g.Title != SelectedTask.Group)) { MGroups.Add(new Grup { Title = SelectedTask.Group }); } } else { SelectedTask.PropertyChanged -= Modify; SelectedTask.Group = ""; SelectedTask.PropertyChanged += Modify; } _groups.Add(SelectedTask); } }
private void Create() { foreach (var ut in _groups) { var b1 = ut.Group != "" && ut.Group != Auto1 && ut.Group != Auto2 && ut.Group != Auto3; var b2 = (ut.Status != TaskStatus.Completed || _chCom) && (ut.Status != TaskStatus.Canceled || _chCan); if (b1 && b2) { var grup = MGroups.FirstOrDefault(gr => gr.Title == ut.Group); if (grup == null) { grup = new Grup { Title = ut.Group }; MGroups.Add(grup); } grup.Tasks.Add(ut); Date(ut); } else if (b2) { Date(ut); ut.Group = ""; MGroups.First(gr => gr.Title == Auto3).Tasks.Add(ut); } else if (b1) { if (MGroups.All(g => g.Title != ut.Group)) { MGroups.Add(new Grup { Title = ut.Group }); } } else { ut.Group = ""; } } }
private void Modify(object sender, PropertyChangedEventArgs e) { if (IsVisibility) { return; } switch (e.PropertyName) { case nameof(Grup.Title): if (SelectedTask != null) { SelectedTask.PropertyChanged -= Modify; } var grup = (Grup)sender; if (grup.Title == Auto1 || grup.Title == Auto2) { SelectedGroup.PropertyChanged -= Modify; grup.Title = $"Безымянная № {MGroups.Count(gr => gr.Title.Contains("Безымянная")) + 1}"; SelectedGroup.PropertyChanged += Modify; foreach (var t in grup.Tasks) { t.Group = grup.Title; } } else if (grup.Title == "" || grup.Title == Auto3) { var auto = MGroups.First(g => g.Title == Auto3); foreach (var ut in grup.Tasks) { ut.Group = ""; auto.Tasks.Add(ut); } SelectedGroup = auto; MGroups.Remove(grup); } else { foreach (var t in grup.Tasks) { t.Group = grup.Title; } var grp = MGroups.FirstOrDefault(g => g.Title == grup.Title && !grup.Equals(g)); if (grp != null) { foreach (var ut in grp.Tasks) { grup.Tasks.Add(ut); } MGroups.Remove(grp); } } if (SelectedTask != null) { SelectedTask.PropertyChanged += Modify; } break; case nameof(UserTask.DueDate): var task = (UserTask)sender; MGroups.FirstOrDefault( g => (g.Title == Auto1 || g.Title == Auto2) && g.Tasks.Contains(task)) ?.Tasks.Remove(task); Date(task); break; case nameof(UserTask.Status): var tsk = (UserTask)sender; if (tsk.Status == TaskStatus.Completed && !_chCom || tsk.Status == TaskStatus.Canceled && !_chCan) { if (tsk.Group == "") { MGroups.First(gr => gr.Title == Auto3).Tasks.Remove(tsk); } else { MGroups.First(gr => gr.Title == tsk.Group).Tasks.Remove(tsk); } var year = tsk.DueDate.Year - DateTime.Today.Year; if (year == 0) { var days = tsk.DueDate.DayOfYear - DateTime.Today.DayOfYear; if (days < 0) { MGroups.First(gr => gr.Title == Auto1).Tasks.Remove(tsk); } else if (days < 2) { MGroups.First(gr => gr.Title == Auto2).Tasks.Remove(tsk); } } else if (year < 0) { MGroups.First(gr => gr.Title == Auto1).Tasks.Remove(tsk); } } else if (MGroups.All(g => !g.Tasks.Contains(tsk))) { if (tsk.Group == "") { MGroups.First(gr => gr.Title == Auto3).Tasks.Add(tsk); } else { MGroups.First(gr => gr.Title == tsk.Group).Tasks.Add(tsk); } Date(tsk); } break; case nameof(UserTask.Group): var ts = (UserTask)sender; MGroups.FirstOrDefault( g => g.Tasks.Contains(ts) && g.Title != Auto1 && g.Title != Auto2) ?.Tasks.Remove(ts); if (ts.Group != "" && ts.Group != Auto1 && ts.Group != Auto2 && ts.Group != Auto3) { var grp = MGroups.FirstOrDefault(gr => gr.Title == ts.Group); if (grp == null) { grp = new Grup { Title = ts.Group }; MGroups.Add(grp); } grp.Tasks.Add(ts); } else { SelectedTask.PropertyChanged -= Modify; ts.Group = ""; SelectedTask.PropertyChanged += Modify; MGroups.First(gr => gr.Title == Auto3).Tasks.Add((UserTask)sender); } break; } }