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; } }
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 }
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); } }