public async Task <IHttpActionResult> CheckMixTask(TrainingMixTask task) { if (task == null) { return(BadRequest("Invalid parameter")); } //Only for demo //await _service.SetTimeAsync(task.WordSuiteId); if (task.Answer.Count == 0 || task.Questions.Count == 0 || task.Answer.Count != task.Questions.Count) { return(BadRequest("Invalid model")); } task.Result = new List <bool>(); for (int i = 0; i < task.Questions.Count; i++) { if (task.Questions[i].Synonyms != null) { if (task.Questions[i].Synonyms.Count == 0) { return(BadRequest("Invalid model")); } var synonyms = await _wordTranslationService.GetAllWordSynonymsById(task.Questions[i].Synonyms[0].Id ?? default(int)); var result = synonyms.Exists(x => x.Value.ToLower() == task.Answer[i].ToLower()); task.Result.Add(result); if (result) { _progressService.IncrementProgressOfOriginalWord(task.WordSuiteId, task.Answer[i]); } } else if (task.Questions[i].Translation != null) { var wordTranslation = await _wordTranslationService.GetByIdWithWordsAsync(task.Questions[i].Translation.Id ?? default(int)); if (wordTranslation != null) { task.Result.Add(wordTranslation.OriginalWord.Value.ToLower() == task.Answer[i].ToLower()); } else { return(InternalServerError()); } } else if (task.Questions[i].Description != null) { var word = await _wordService.GetWordByIdAsync(task.Questions[i].Description.Id ?? default(int)); if (word != null) { task.Result.Add(word.Value.ToLower() == task.Answer[i].ToLower()); } else { return(InternalServerError()); } } else { return(BadRequest("Invalid model")); } } return(Ok(task)); }
public async Task <IHttpActionResult> GetMixTask(int id) { var suite = await _service.GetWithNotStudiedWordsAsync(id); if (suite.OwnerId == UserId) { if (suite.QuizStartTime == null) { suite.QuizStartTime = new DateTime(); } if (((DateTime)suite.QuizStartTime).AddDays(1) < DateTime.Now) { TrainingMixTask task = new TrainingMixTask(); task.WordSuiteId = suite.Id; task.WordSuiteName = suite.Name; task.QuizResponseTime = suite.QuizResponseTime; task.Questions = new List <MixTaskQuestionModel>(); foreach (var wordProgress in suite.WordProgresses) { var synonyms = await _wordTranslationService.GetAllWordSynonymsById( wordProgress.WordTranslation.OriginalWordId); if (synonyms.Count != 0) { var taskQuestion = new MixTaskQuestionModel() { Synonyms = synonyms }; task.Questions.Add(taskQuestion); } var wordTranslation = wordProgress.WordTranslation; if (wordTranslation.OriginalWord.Description != null) { var taskQuestion = new MixTaskQuestionModel() { Description = new WordValueModel { Id = wordTranslation.OriginalWordId, Value = wordTranslation.OriginalWord.Description } }; task.Questions.Add(taskQuestion); } task.Questions.Add(new MixTaskQuestionModel() { Translation = new WordValueModel { Id = wordTranslation.Id, Value = wordTranslation.TranslationWord.Value } }); } Shuffle(task.Questions); return(Ok(task)); } return(BadRequest(MessagesContainer.OneQuizPerDay)); } return(BadRequest(MessagesContainer.NotYourQuiz)); }