예제 #1
0
        public void NoticeAnswer(LearnInputModel inputModel)
        {
            if (inputModel.PreviousWord == null)
            {
                return;
            }

            var word = this.toLearn.FirstOrDefault(w => w.Polish == inputModel.PreviousWord);

            if (word == null)
            {
                return;
            }

            LearningWord learning = NoticeLearningOf(word);

            if (inputModel.UserMarkedWordAsLearned())
            {
                this.toLearn.Remove(word);
                this.learned.Add(word);
                learning.Learned = true;
            }
            else
            {
                learning.Mistakes++;
            }

            CurrentUser.Learned(learning);
        }
예제 #2
0
        private Book GetBookForLearning(LearnInputModel inputModel)
        {
            Book book;

            if (inputModel.Book == null)
            {
                book                = BookStore.RandomBook();
                inputModel.Book     = book.Name;
                inputModel.Category = null;
            }
            else
            {
                book = BookStore.GetBook(inputModel.Book);
            }
            return(book);
        }
예제 #3
0
        private Category GetCategoryForLearning(LearnInputModel inputModel, Book book)
        {
            Category category;

            if (inputModel.Category == null)
            {
                category                = book.RandomCategory();
                inputModel.Category     = category.Name;
                inputModel.PreviousWord = null;
            }
            else
            {
                category = book.GetCategory(inputModel.Category);
            }
            return(category);
        }
예제 #4
0
        private Lesson GetLesson(LearnInputModel inputModel)
        {
            // TODO: dodaj aktualne słowo do input - żeby BACK przechodził na to samo słowo i żeby można było poprawić błąd
            var lesson = this.Session[inputModel.Lesson] as Lesson;

            if (lesson != null)
            {
                return(lesson);
            }

            var book     = this.GetBookForLearning(inputModel);
            var category = this.GetCategoryForLearning(inputModel, book);

            lesson = new Lesson(inputModel.Lesson, book, category, inputModel.Count);
            this.Session[inputModel.Lesson] = lesson;

            return(lesson);
        }
예제 #5
0
        public ActionResult Learn(LearnInputModel inputModel)
        {
            Fail.IfNull(inputModel, nameof(inputModel));

            var lesson = this.GetLesson(inputModel);

            if (string.IsNullOrWhiteSpace(inputModel.Word))
            {
                inputModel.Word = lesson.NextWord().Polish;
                return(this.RedirectToAction(nameof(Learn), inputModel));
            }

            lesson.NoticeAnswer(inputModel);
            var model = new LearnModel(lesson, inputModel.Word);

            if (lesson.LearnedAll())
            {
                lesson.Finished();

                return(this.View("Success", model));
            }

            return(View(model));
        }