Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
 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 = "";
         }
     }
 }
Beispiel #3
0
        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;
            }
        }