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