コード例 #1
0
ファイル: IssueViewModel.cs プロジェクト: KBurov/Testing
        private void NextIssue(object o)
        {
            CurrentIssue.IsAnswered = true;
            // Save answer
            var isCorrect = false;

            switch (IssueType)
            {
            case IssueTypes.Selection:
            {
// ReSharper disable PossibleNullReferenceException
                var selectedByUserIssueIndex = Answers.IndexOf(Answers.First(a => a.SelectedByUser)) + 1;
                var correctIssueIndex        = CurrentIssue.Answers.IndexOf(CurrentIssue.Answers.First(a => a.IsCorrect)) + 1;
// ReSharper restore PossibleNullReferenceException
                AppController.UserInfo.Answers[_currentSet].Add(new UserAnswer
                    {
                        IsCorrect     = (isCorrect = selectedByUserIssueIndex == correctIssueIndex),
                        Answer        = selectedByUserIssueIndex.ToString("0"),
                        CorrectAnswer = correctIssueIndex.ToString("0"),
                        Points        = CurrentIssue.CorrectAnswerPoints
                    });
            }
            break;

            case IssueTypes.SelectionInImage:
                AppController.UserInfo.Answers[_currentSet].Add(new UserAnswer
                {
                    IsCorrect     = (isCorrect = UserAnswer == CorrectAnswer),
                    Answer        = UserAnswer.ToString("0"),
                    CorrectAnswer = CorrectAnswer.ToString("0"),
                    Points        = CurrentIssue.CorrectAnswerPoints
                });
                break;

            case IssueTypes.ImageSelection:
            {
// ReSharper disable AssignNullToNotNullAttribute
                var userSelection    = Answers.Where(a => a.SelectedByUser).Select(a => a.OriginalImageFileName).ToList();
                var correctSelection = CurrentIssue.Answers.Where(a => a.Selected).Select(a => a.ImageFileName).ToList();
// ReSharper restore AssignNullToNotNullAttribute
                AppController.UserInfo.Answers[_currentSet].Add(new UserAnswer
                    {
                        IsCorrect =
                            (isCorrect =
                                 userSelection.Count == correctSelection.Count &&
                                 userSelection.All(correctSelection.Contains)),
                        Answer        = string.Empty,
                        CorrectAnswer = string.Empty,
                        Points        = CurrentIssue.CorrectAnswerPoints
                    });
            }
            break;

            case IssueTypes.Order:
                AppController.UserInfo.Answers[_currentSet].Add(new UserAnswer
                {
// ReSharper disable AssignNullToNotNullAttribute
                    IsCorrect = (isCorrect = !Answers.Where((answer, index) => answer.OrderNo != index).Any()),
// ReSharper restore AssignNullToNotNullAttribute
                    Answer        = string.Empty,
                    CorrectAnswer = string.Empty,
                    Points        = CurrentIssue.CorrectAnswerPoints
                });
                break;

            case IssueTypes.Placement:
                isCorrect = PlacementCorrectAnswer1.Count == CurrentIssue.PlacementCorrectAnswer1.Count &&
                            !PlacementCorrectAnswer1.Where(
                    (imageFileName, index) =>
                    imageFileName !=
                    Path.Combine(_currentDirectory, CurrentIssue.PlacementCorrectAnswer1[index])).Any();
                isCorrect &= PlacementCorrectAnswer2.Count == CurrentIssue.PlacementCorrectAnswer2.Count &&
                             !PlacementCorrectAnswer2.Where(
                    (imageFileName, index) =>
                    imageFileName !=
                    Path.Combine(_currentDirectory, CurrentIssue.PlacementCorrectAnswer2[index])).Any();
                isCorrect &= NumberOfShelves < 3 ||
                             (PlacementCorrectAnswer3.Count == CurrentIssue.PlacementCorrectAnswer3.Count &&
                              !PlacementCorrectAnswer3.Where(
                                  (imageFileName, index) =>
                                  imageFileName !=
                                  Path.Combine(_currentDirectory, CurrentIssue.PlacementCorrectAnswer3[index])).Any());
                isCorrect &= NumberOfShelves < 4 ||
                             (PlacementCorrectAnswer4.Count == CurrentIssue.PlacementCorrectAnswer4.Count &&
                              !PlacementCorrectAnswer4.Where(
                                  (imageFileName, index) =>
                                  imageFileName !=
                                  Path.Combine(_currentDirectory, CurrentIssue.PlacementCorrectAnswer4[index])).Any());
                isCorrect &= NumberOfShelves < 5 ||
                             (PlacementCorrectAnswer5.Count == CurrentIssue.PlacementCorrectAnswer5.Count &&
                              !PlacementCorrectAnswer4.Where(
                                  (imageFileName, index) =>
                                  imageFileName !=
                                  Path.Combine(_currentDirectory, CurrentIssue.PlacementCorrectAnswer5[index])).Any());

                AppController.UserInfo.Answers[_currentSet].Add(new UserAnswer
                {
                    IsCorrect     = isCorrect,
                    Answer        = string.Empty,
                    CorrectAnswer = string.Empty,
                    Points        = CurrentIssue.CorrectAnswerPoints
                });
                break;
            }

            if (isCorrect)
            {
                AppController.UserInfo.CorrectAnswers[_currentSet]++;
                AppController.UserInfo.CorrectAnswerPoints[_currentSet] += CurrentIssue.CorrectAnswerPoints;
            }
            else
            {
                AppController.UserInfo.IncorrectAnswers[_currentSet]++;
            }
            // Go to the either next issue or result page
            var issue = GetNextIssue();

            if (issue == null)
            {
                var page = o as Page;

                if (page != null && page.NavigationService != null)
                {
                    page.NavigationService.Navigate(AppController.GetPage(ApplicationPages.ResultPage));
                }
            }
            else
            {
                SetNewIssue(issue);
            }
        }
コード例 #2
0
 public bool Evaluate()
 {
     return(Response.ToString() == CorrectAnswer.ToString());
 }