コード例 #1
0
 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);
 }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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))));
        }
コード例 #4
0
 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;
 }
コード例 #5
0
 public SolutionWindowViewModel(StudentEducationTask task)
 {
     _task   = task;
     Answers = new List <AnswerViewModel>(_task.Solution.Questions.Select(i => new AnswerViewModel(i)));
 }
コード例 #6
0
 public TaskDetailsWindowViewModel TaskDetailsWindowViewModel(StudentEducationTask task) => new TaskDetailsWindowViewModel(task, _tasksManager, _education);