public async Task <IHttpActionResult> GetSynonymTask(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)
                {
                    TrainingSynonymTask task = new TrainingSynonymTask();
                    task.WordSuiteId      = suite.Id;
                    task.WordSuiteName    = suite.Name;
                    task.QuizResponseTime = suite.QuizResponseTime;
                    task.Synonyms         = new List <List <WordValueModel> >();

                    foreach (var wordProgress in suite.WordProgresses)
                    {
                        var synonyms = await _wordTranslationService.GetAllWordSynonymsById(
                            wordProgress.WordTranslation.OriginalWordId);

                        if (synonyms.Count != 0)
                        {
                            task.Synonyms.Add(synonyms);
                        }
                    }

                    return(Ok(task));
                }
                return(BadRequest(MessagesContainer.OneQuizPerDay));
            }
            return(BadRequest(MessagesContainer.NotYourQuiz));
        }
        public async Task <IHttpActionResult> CheckSynonymTask(TrainingSynonymTask task)
        {
            if (task == null)
            {
                return(BadRequest("Invalid parameter"));
            }

            // Only for demo
            //await _service.SetTimeAsync(task.WordSuiteId);

            if (task.Answer.Count == 0 || task.Synonyms.Count == 0 || task.Answer.Count != task.Synonyms.Count)
            {
                return(BadRequest("Invalid model"));
            }

            task.Result = new List <bool>();
            for (int i = 0; i < task.Synonyms.Count; i++)
            {
                if (task.Synonyms[i].Count == 0)
                {
                    return(BadRequest("Invalid model"));
                }

                var synonyms = await _wordTranslationService.GetAllWordSynonymsById(task.Synonyms[i][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]);
                }
            }

            return(Ok(task));
        }