public void SetFirstReviewQuestion() { switch (ReviewState) { case ReviewState.none: throw new ApplicationException("Method can used in ReviewMode only."); break; case ReviewState.ReviewIncorrect: if (QuestionInfoForReview.flaged.Count > 0) { QuestionIdentity qide = QuestionInfoForReview.flaged[0]; SetActiveSet(qide.SetId); SetActiveQuestion(qide.QuestionId); } break; case ReviewState.ReviewFlagged: if (QuestionInfoForReview.incorrect.Count > 0) { QuestionIdentity qide = QuestionInfoForReview.incorrect[0]; SetActiveSet(qide.SetId); SetActiveQuestion(qide.QuestionId); } break; case ReviewState.UserReview: break; default: break; } }
public void SetUserAnswer(int answerId, bool reviewFlag) { _setUserAnswer(answerId); //New functionality - store review flag lock (QuestionInfoForReview.flaged) { QuestionIdentity questionIde = new QuestionIdentity(sets.QuestionSets[activeSetIndex].Id, ActiveQuestion.Id); if (QuestionInfoForReview.flaged.Contains(questionIde)) { if (!reviewFlag) { QuestionInfoForReview.flaged.Remove(questionIde); } } else { if (reviewFlag) { QuestionInfoForReview.flaged.Add(questionIde); } } } }
private QuestionIdentity GetNextReviewQuestion() { List <QuestionIdentity> questionIdentityCollection = GetQuestionIdentityCollection(); QuestionIdentity cirrentQuestionIde = new QuestionIdentity(sets.QuestionSets[activeSetIndex].Id, ActiveQuestion.Id); for (int i = 0; i < questionIdentityCollection.Count; i++) { if (questionIdentityCollection[i] == cirrentQuestionIde) { if (i + 1 < questionIdentityCollection.Count) { return(questionIdentityCollection[i + 1]); } } } if (questionIdentityCollection.Count > 0) { return(questionIdentityCollection[0]); } throw new ApplicationException("Unknoun error."); }
private void _setUserAnswer(int answerId) { CheckTime(); QuestionAnswerSet.QuestionsRow q = ActiveQuestion; ResultResultDetailSet.ResultsDetailsRow row = result.ResultsDetails.FindByResultIdQuestionId(result.Results[0].Id, q.Id); bool isCorrect = false; foreach (QuestionAnswerSet.AnswersRow r in q.GetAnswersRows()) { if (r.Id == answerId) { isCorrect = r.IsCorrect; break; } } double scoreForCorrect = CalculateScoreOfActiveQuestion(true); double score = CalculateScoreOfActiveQuestion(isCorrect); ResultResultDetailSet.ResultsDetailsOfSetsRow setRow = result.ResultsDetailsOfSets.FindByResultIdQuestionSetId(resultRow.Id, sets.QuestionSets[activeSetIndex].Id); if (row != null) { row.AnswerId = answerId; QuestionIdentity qi = new QuestionIdentity(setRow.QuestionSetId, q.Id); if (isCorrect) { if (((Question.Status)questionStatus[q.Id]).status != BuisinessObjects.StatusType.ANSWER_IS_CORRECT) { setRow.Score += score; } QuestionInfoForReview.incorrect.Remove(qi); } else { if (((Question.Status)questionStatus[q.Id]).status == BuisinessObjects.StatusType.ANSWER_IS_CORRECT) { setRow.Score -= scoreForCorrect; } if (!QuestionInfoForReview.incorrect.Contains(qi)) { QuestionInfoForReview.incorrect.Add(qi); } } } else { result.ResultsDetails.AddResultsDetailsRow( resultRow, q.Id, answerId, (byte)(ActiveQuestionIndex + 1), questionStartTime, DateTime.Now); questionStartTime = DateTime.Now; setRow.Score += score; } ((Question.Status)questionStatus[q.Id]).status = isCorrect ? BuisinessObjects.StatusType.ANSWER_IS_CORRECT : BuisinessObjects.StatusType.ANSWER_IS_INCORRECT; ((Question.Status)questionStatus[q.Id]).answeredId = answerId; ((Question.Status)questionStatus[q.Id]).score = score; }