private void Command_CloseTask(object sender, ExecutedRoutedEventArgs e) { TasksGroupControl selectedGroup = groups.FirstOrDefault(x => x.SelectedTask != null); if (selectedGroup != null && (selectedGroup.SelectedTask.State == TaskState.Open || selectedGroup.SelectedTask.State == TaskState.Postponed)) { Task selectedTask = selectedGroup.SelectedTask; selectedTask.Close(); selectedGroup.RemoveTask(selectedTask); groupClosed.AddTask(selectedTask); ActionsCollection.Instance.Remove(ActionsCollection.Instance.Actions.OfType <TaskDeadlineAction>().FirstOrDefault(x => x.Task == selectedTask)); using (IRepository <Task, long> repository = PersistentFactory.GetContext().GetRepository <Task, long>()) repository.Update(selectedTask); StatsHelper.Update(StatsData.TaskClosed); StatsHelper.Update(StatsHelper.PriorityUpdate(selectedTask.Priority)); NotificationHelper.Notify(NotificationType.TaskClosed, selectedTask.Name); } }