public AddTaskWindowViewModel(Teacher teacher, IEducationMaterialsManager materialsManager, IEducationTasksManager tasksManager) { Materials = new ObservableCollection <EducationMaterial>(materialsManager.Select(teacher)); Questions = new ObservableCollection <QuestionViewModel>(); AddQuestion = new DelegateCommand(() => Questions.Add(new QuestionViewModel())); Save = new DelegateCommand(() => { tasksManager.Insert(new EducationTask(tasksManager.Id(teacher), SelectedMaterial, Questions.Select(i => new TaskQuestion(i.Question, i.Correct, i.UnCorrect)).ToList())); ViewService.Message("Контрольная работа сохранена"); }); }
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 TaskDetailsWindowViewModel(StudentEducationTask task, IEducationTasksManager tasksManager, IEducationTaskExaminationManager examination) { Theme = task.Material.Theme; _random = new Random(); Questions = new ObservableCollection <QuestionSelectorViewModel>(task.Questions.Select(i => new QuestionSelectorViewModel(i, _random))); CurrentQuestion = Questions.First(); _prev = new DelegateCommand(() => { var index = Questions.IndexOf(CurrentQuestion); if (index > 0) { CurrentQuestion.Check(); CurrentQuestion = Questions[--index]; CurrentQuestionNumber = ++index; } }, () => CurrentQuestionNumber - 1 > 0); _next = new DelegateCommand(() => { var index = Questions.IndexOf(CurrentQuestion); if (index < Questions.Count - 1) { CurrentQuestion.Check(); CurrentQuestion = Questions[++index]; CurrentQuestionNumber = ++index; } }, () => CurrentQuestionNumber - 1 < Questions.Count - 1); Finish = new DelegateCommand(() => { var result = examination.Examine(task, Questions.Select(i => new KeyValuePair <TaskQuestion, string>(task.Questions.FirstOrDefault(j => j.Question.Trim() == i.Question.Trim()), i.CurrentAnswer))); tasksManager.Insert(result); if (ViewService.GetIfOpened(out var view, this)) { view.Close(); ViewService.Message($"Ваша оценка {result.Solution.Mark}"); } }); SelectAnswer = new DelegateCommand <string>((param) => CurrentQuestion.CurrentAnswer = param); CurrentQuestionNumber = 1; }