public async Task <OperationDataResult <List <CommonDictionaryModel> > > GetFilterAnswers(DashboardItemAnswerRequestModel requestModel)
        {
            try
            {
                var core = await _coreHelper.GetCore();

                using (var sdkContext = core.DbContextHelper.GetDbContext())
                {
                    var languages = await sdkContext.Languages.ToListAsync();

                    var  answersResult    = new List <CommonDictionaryModel>();
                    bool isSmileyQuestion = false;
                    foreach (var language in languages)
                    {
                        isSmileyQuestion = await sdkContext.Questions
                                           .Where(x => x.Id == requestModel.FilterQuestionId)
                                           .Select(x => x.IsSmiley())
                                           .FirstOrDefaultAsync();

                        // TODO take by language
                        var answers = await sdkContext.Options
                                      .AsNoTracking()
                                      .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed)
                                      .Where(x => x.QuestionId == requestModel.FilterQuestionId)
                                      .Select(x => new CommonDictionaryModel()
                        {
                            Id   = x.Id,
                            Name = x.OptionTranslationses
                                   .Where(qt => qt.WorkflowState != Constants.WorkflowStates.Removed)
                                   .Where(qt => qt.Language.Id == language.Id)
                                   .Select(qt => qt.Name)
                                   .FirstOrDefault(),
                        }).ToListAsync();

                        if (answers.Any())
                        {
                            answersResult.AddRange(answers);
                            break;
                        }
                    }

                    if (isSmileyQuestion)
                    {
                        var result = new List <CommonDictionaryModel>();

                        foreach (var dictionaryModel in answersResult)
                        {
                            result.Add(new CommonDictionaryModel
                            {
                                Id          = dictionaryModel.Id,
                                Name        = ChartHelpers.GetSmileyLabel(dictionaryModel.Name),
                                Description = dictionaryModel.Description,
                            });
                        }

                        return(new OperationDataResult <List <CommonDictionaryModel> >(
                                   true,
                                   result));
                    }


                    return(new OperationDataResult <List <CommonDictionaryModel> >(
                               true,
                               answersResult));
                }
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _logger.LogError(e.Message);
                return(new OperationDataResult <List <CommonDictionaryModel> >(false,
                                                                               _localizationService.GetString("ErrorWhileObtainingAnswers")));
            }
        }
 public async Task <OperationDataResult <List <CommonDictionaryModel> > > GetFilterAnswers(DashboardItemAnswerRequestModel requestModel)
 {
     return(await _dictionaryService.GetFilterAnswers(requestModel));
 }