public ActionResult Answer(long reviewID, int flashcardID, string answer) { var review = unit.InternalReviewRepository.GetById(reviewID); var card = unit.ReviewCardRepository.GetCardForReview(reviewID, flashcardID); if (card == null || review == null) { return(View("QuestionError")); } var ans = new FlashcardAnswer(card.Flashcard, review.Language, answer); bool isCorrect = false; double correctness = 0.0; if ((isCorrect = reviewService.IsAnswerCorrect(ans)) == true) { correctness = reviewService.AcceptAnswer(card, ans); } else { reviewService.DeclineAnswer(card); } var vm = new AnswerViewModel(flashcardID, review.Language, isCorrect, correctness); return(PartialView(vm)); }
public double AcceptAnswer(ReviewCard card, FlashcardAnswer answer) { var correctness = userFLashcardMemoryService.UpdateMemoryBasedOnAnswer(card, answer); RemoveReviewCard(card); AddNewReviewCardIfAble(); return(correctness); }
public double AcceptAnswer(TrainingCard trainingFlashcard, FlashcardAnswer answer) { var correctness = CalculateCorrectnessOfAnswer(answer); unit.UserFlashcardMemoryRepository.AddBasedOnTraining(trainingFlashcard, (decimal)(correctness * correctness)); unit.TrainingCardRepository.Remove(trainingFlashcard); unit.SaveChanges(); sessionService.UserInfo.TrainingInfo.Cards.RemoveAt(0); return(correctness); }
public bool IsAnswerCorrect(FlashcardAnswer answer) { var correctess = CalculateCorrectnessOfAnswer(answer); if (correctess > 0.82f) { return(true); } return(false); }
public bool IsAnswerCorrect(FlashcardAnswer answer) { var correctess = questionService.CalculateCorrectnessOfAnswerWithoutSignificance(answer); if (correctess >= 0.7f) { return(true); } return(false); }
public double CalculateCorrectnessOfAnswer(FlashcardAnswer answer) { var translations = unit.FlashcardTranslationRepository.GetTRanslationsForFlashcard(answer.Flashcard.ID, answer.Language.ID); double maxScore = 0.0; foreach (var translation in translations) { var score = CalculateCorrectnessOfAnswer(translation.Translation, answer.Answer) * (double)translation.Significance; if (score > maxScore) { maxScore = score; } } return(maxScore); }
public double UpdateMemoryBasedOnAnswer(ReviewCard card, FlashcardAnswer answer) { var memory = unit.UserFlashcardMemoryRepository .GetMemoryBasedOnReview(card.ReviewID, card.FlashcardID, sessionService.UserID); var correctness = questionService.CalculateCorrectnessOfAnswer(answer); double newStrength = calculateNewStrength(card, memory, correctness); int newInterval = calculateNewInterval(memory, newStrength, card); memory.Strength = (decimal)newStrength; memory.LastInterval = newInterval; memory.IntervalCount++; memory.ReviewDate = DateTime.Now.AddMinutes(newInterval); unit.SaveChanges(); return(correctness); }
public ActionResult Answer(int trainingID, long trainingCardID, string answer) { var training = unit.TrainingRepository.GetById(trainingID); var card = training.TrainingCards.First(c => c.FlashcardID == trainingCardID); var ans = new FlashcardAnswer(card.Flashcard, training.Language, answer); bool isCorrect = false; double correctness = 0.0; int flashcardID = card.FlashcardID; if ((isCorrect = trainingReviewService.IsAnswerCorrect(ans)) == true) { correctness = trainingReviewService.AcceptAnswer(card, ans); } else { trainingReviewService.DeclineAnswer(card); } var vm = new AnswerViewModel(flashcardID, training.Language, isCorrect, correctness); return(PartialView(vm)); }
public virtual double CalculateCorrectnessOfAnswer(FlashcardAnswer answer) { return(questionService.CalculateCorrectnessOfAnswer(answer)); }