public StudentDetailsWindowViewModel(Student student, Teacher teacher, IEducationMaterialsManager educationMaterialsManager, IEducationTasksManager tasksManager) { Materials = new ObservableCollection <StudentMaterialViewModel>(educationMaterialsManager.Select(student).Select(i => new StudentMaterialViewModel(i))); Tasks = new ObservableCollection <StudentTaskViewModel>(tasksManager.Select(student).Select(i => new StudentTaskViewModel(i))); AddMaterials = new DelegateCommand(() => { _materialsToStudent = new MaterialsToStudentViewModel(educationMaterialsManager.Select(teacher).Select(i => new MaterialSelectorItem(i, Materials.Any(j => j.Model().Owner.Equals(i.Owner) && j.Theme == i.Theme)))); _materialsToStudent.ItemsChanged += (sender, e) => { foreach (var foo in _materialsToStudent.Materials.Where(i => i.IsSelected).Where(i => !Materials.Any(j => j.Equals(i)))) { Materials.Add(new StudentMaterialViewModel(new StudentEducationMaterial(student, foo.EducationMaterial))); } }; ViewService.CreateView(_materialsToStudent).ShowDialog(); }); AddTasks = new DelegateCommand(() => { _taskToStudent = new TaskToStudentWindowViewModel(tasksManager.Select(teacher).Select(i => new TaskSelectorItem(i, Tasks.Any(j => j.TaskNumder == i.Id)))); _taskToStudent.ItemsChanged += (sender, e) => { foreach (var task in _taskToStudent.Tasks.Where(i => i.IsSelected).Where(i => !Tasks.Any(j => j.TaskNumder == i.Task.Id))) { Tasks.Add(new StudentTaskViewModel(new StudentEducationTask(student, task.Task))); } }; ViewService.CreateView(_taskToStudent).ShowDialog(); }); Save = new DelegateCommand(() => { foreach (var material in Materials.Select(i => i.Model())) { educationMaterialsManager.Insert(material); } foreach (var task in Tasks) { tasksManager.Insert(task.Model()); } ViewService.Message("Изменения сохранены"); }); _student = student; }
public StudentInfoViewModel(Student student, IViewModelsFactory factory, IEducationMaterialsManager materialsManager, IEducationTasksManager tasksManager) { _student = student; Materials = new ObservableCollection <StudentEducationMaterial>(materialsManager.Select(student)); Tasks = new ObservableCollection <StudentEducationTask>(tasksManager.Select(student)); OpenMaterialDetails = new DelegateCommand(() => { if (SelectedMaterial != null) { ViewService.CreateView(factory.MaterialDetailsWindowViewModel(SelectedMaterial)).ShowDialog(); } }); OpenTaskDetails = new DelegateCommand(() => { if (SelectedTask != null) { ViewService.CreateView(factory.TaskDetailsWindowViewModel(SelectedTask)).ShowDialog(); } }); }