示例#1
0
        private void AddPlacementCorrectAnswer(object o)
        {
            var shelfNumber       = o.ToString();
            var fullImageFileName = Answers[SelectedAnswerIndex].ImageFileName;

            switch (shelfNumber)
            {
            case "1":
                PlacementCorrectAnswer1.Add(fullImageFileName);
                break;

            case "2":
                PlacementCorrectAnswer2.Add(fullImageFileName);
                break;

            case "3":
                PlacementCorrectAnswer3.Add(fullImageFileName);
                break;

            case "4":
                PlacementCorrectAnswer4.Add(fullImageFileName);
                break;

            case "5":
                PlacementCorrectAnswer5.Add(fullImageFileName);
                break;
            }
        }
示例#2
0
        private void DeleteImage()
        {
            var fullImageFileName = Answers[SelectedAnswerIndex].ImageFileName;

            if (IssueType == IssueTypes.Placement)
            {
                var imageFileName = Answers[SelectedAnswerIndex].OriginalImageFileName;

                while (PlacementCorrectAnswer1.Contains(fullImageFileName))
                {
                    PlacementCorrectAnswer1.Remove(fullImageFileName);
                }
                while (PlacementCorrectAnswer2.Contains(fullImageFileName))
                {
                    PlacementCorrectAnswer2.Remove(fullImageFileName);
                }
                while (PlacementCorrectAnswer3.Contains(fullImageFileName))
                {
                    PlacementCorrectAnswer3.Remove(fullImageFileName);
                }
                while (PlacementCorrectAnswer4.Contains(fullImageFileName))
                {
                    PlacementCorrectAnswer4.Remove(fullImageFileName);
                }
                while (PlacementCorrectAnswer5.Contains(fullImageFileName))
                {
                    PlacementCorrectAnswer5.Remove(fullImageFileName);
                }

                while (CurrentIssue.PlacementCorrectAnswer1.Contains(imageFileName))
                {
                    CurrentIssue.PlacementCorrectAnswer1.Remove(imageFileName);
                }
                while (CurrentIssue.PlacementCorrectAnswer2.Contains(imageFileName))
                {
                    CurrentIssue.PlacementCorrectAnswer2.Remove(imageFileName);
                }
                while (CurrentIssue.PlacementCorrectAnswer3.Contains(imageFileName))
                {
                    CurrentIssue.PlacementCorrectAnswer3.Remove(imageFileName);
                }
                while (CurrentIssue.PlacementCorrectAnswer4.Contains(imageFileName))
                {
                    CurrentIssue.PlacementCorrectAnswer4.Remove(imageFileName);
                }
                while (CurrentIssue.PlacementCorrectAnswer5.Contains(imageFileName))
                {
                    CurrentIssue.PlacementCorrectAnswer5.Remove(imageFileName);
                }
            }

            CurrentIssue.Answers.RemoveAt(SelectedAnswerIndex);

            Answers.RemoveAt(SelectedAnswerIndex);

            RaiseInterfaceUpdate();
// ReSharper disable AssignNullToNotNullAttribute
            File.Delete(fullImageFileName);
// ReSharper restore AssignNullToNotNullAttribute
        }
示例#3
0
        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);
            }
        }