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