Пример #1
0
        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));
        }
Пример #2
0
        public double AcceptAnswer(ReviewCard card, FlashcardAnswer answer)
        {
            var correctness = userFLashcardMemoryService.UpdateMemoryBasedOnAnswer(card, answer);

            RemoveReviewCard(card);
            AddNewReviewCardIfAble();
            return(correctness);
        }
Пример #3
0
        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);
        }
Пример #4
0
        public bool IsAnswerCorrect(FlashcardAnswer answer)
        {
            var correctess = CalculateCorrectnessOfAnswer(answer);

            if (correctess > 0.82f)
            {
                return(true);
            }

            return(false);
        }
Пример #5
0
        public bool IsAnswerCorrect(FlashcardAnswer answer)
        {
            var correctess = questionService.CalculateCorrectnessOfAnswerWithoutSignificance(answer);

            if (correctess >= 0.7f)
            {
                return(true);
            }

            return(false);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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));
        }
Пример #9
0
 public virtual double CalculateCorrectnessOfAnswer(FlashcardAnswer answer)
 {
     return(questionService.CalculateCorrectnessOfAnswer(answer));
 }