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