public TasksViewModel(ITaskHub taskHub) { Tasks = new ObservableCollection<Task>(); TaskStatuses = new ObservableCollection<string>{ "Open", "Closed", "On Hold" }; Messenger.Default.Register<GotTasksForUserEvent>(this, (e) => { Tasks.Clear(); foreach (Task task in e.Tasks) { Tasks.Add(task); } }); Messenger.Default.Register<AddedTaskEvent>(this, (e) => { Tasks.Add(e.AddedTask); }); Messenger.Default.Register<UpdatedTaskEvent>(this, (e) => { if (e == null || e.UpdatedTask == null) { return; } Task taskToUpdate = Tasks.FirstOrDefault(t => t.TaskID == e.UpdatedTask.TaskID); if (taskToUpdate != null) { if (taskToUpdate.IsDeleted || taskToUpdate.AssignedTo != Username) { Tasks.Remove(taskToUpdate); } else { taskToUpdate.AssignedTo = e.UpdatedTask.AssignedTo; taskToUpdate.Details = e.UpdatedTask.Details; taskToUpdate.Status = e.UpdatedTask.Status; taskToUpdate.Title = e.UpdatedTask.Title; taskToUpdate.IsDeleted = e.UpdatedTask.IsDeleted; } } else { // This is a new assigned task Tasks.Add(e.UpdatedTask); } }); Messenger.Default.Register<DeletedTaskEvent>(this, (e) => { if (e == null || e.DeletedTask == null) { return; } Task deletedTask = Tasks.FirstOrDefault(t => t.TaskID == e.DeletedTask.TaskID); if (deletedTask != null) { Tasks.Remove(deletedTask); } }); Messenger.Default.Register<LoginEvent>(this, (e) => { Username = e.Username; }); AddTask = new RelayCommand(() => { Messenger.Default.Send(new NewTaskEvent()); }); }
public TasksViewModel(ITaskHub taskHub) { Tasks = new ObservableCollection<Task>(); TaskStatuses = new ObservableCollection<string>{ "Open", "Closed", "On Hold" }; Messenger.Default.Register<GotTasksForUserEvent>(this, (e) => { Tasks.Clear(); foreach (Task task in e.Tasks) { Tasks.Add(task); } }); Messenger.Default.Register<AddedTaskEvent>(this, (e) => { Tasks.Add(e.AddedTask); }); Messenger.Default.Register<UpdatedTaskEvent>(this, (e) => { if (e == null || e.UpdatedTask == null) { return; } Task taskToUpdate = Tasks.FirstOrDefault(t => t.TaskID == e.UpdatedTask.TaskID); if (taskToUpdate != null) { if (taskToUpdate.IsDeleted) { Tasks.Remove(taskToUpdate); } else { taskToUpdate.AssignedTo = e.UpdatedTask.AssignedTo; taskToUpdate.Details = e.UpdatedTask.Details; taskToUpdate.Status = e.UpdatedTask.Status; taskToUpdate.Title = e.UpdatedTask.Title; taskToUpdate.IsDeleted = e.UpdatedTask.IsDeleted; } } }); Messenger.Default.Register<DeletedTaskEvent>(this, (e) => { if (e == null || e.DeletedTask == null) { return; } Task deletedTask = Tasks.FirstOrDefault(t => t.TaskID == e.DeletedTask.TaskID); if (deletedTask != null) { Tasks.Remove(deletedTask); } }); AddTask = new RelayCommand(() => { Messenger.Default.Send(new NewTaskEvent()); }); if (DesignerProperties.IsInDesignTool) { for (int i = 0; i < 10; i++) { Tasks.Add(new Task { AssignedTo = "andyjmay", DateCreated = System.DateTime.Today.AddDays(-i), Details = "Some details for task " + i, IsDeleted = false, Status = "Open", Title = "Task " + i }); } } }