public StudentTaskViewModel(StudentEducationTask task) { _bestMark = new SolidColorBrush(Colors.LimeGreen); _goodMark = new SolidColorBrush(Colors.Orange); _worsestMark = new SolidColorBrush(Colors.Red); _task = task; OpenSolution = new DelegateCommand(() => ViewService.CreateView(new SolutionWindowViewModel(_task)).ShowDialog(), () => _task.IsDone); }
public void Insert(StudentEducationTask educationTask) { var finded = _educationTaskProvider.Select().FirstOrDefault(i => i.Student.Equals(educationTask.Student) && i.Material.Equals(educationTask.Material) && i.Id == educationTask.Id); if (finded != null) { _educationTaskProvider.Update(educationTask); } else { _educationTaskProvider.Create(educationTask); } }
public StudentEducationTask Examine(StudentEducationTask task, IEnumerable <KeyValuePair <TaskQuestion, string> > answers) { var list = new List <KeyValuePair <TaskQuestion, bool> >(); foreach (var question in task.Questions) { var answer = answers.FirstOrDefault(i => i.Key.Equals(question)); if (answer.Key != null && question.IsCorrect(answer.Value)) { list.Add(new KeyValuePair <TaskQuestion, bool>(answer.Key, true)); } else { list.Add(new KeyValuePair <TaskQuestion, bool>(answer.Key, false)); } } double mark = 5.0 / list.Count * list.Where(i => i.Value == true).Count(); return(new StudentEducationTask(task.Id, task.Student, task.Material, task.Questions, new EducationTaskSolution(task, list, (int)Math.Ceiling(mark != 0 ? mark : 1)))); }
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; }
public SolutionWindowViewModel(StudentEducationTask task) { _task = task; Answers = new List <AnswerViewModel>(_task.Solution.Questions.Select(i => new AnswerViewModel(i))); }
public TaskDetailsWindowViewModel TaskDetailsWindowViewModel(StudentEducationTask task) => new TaskDetailsWindowViewModel(task, _tasksManager, _education);