public async Task <IEnumerable <LanguageKey> > GetPageLanguages(string pageId) { var languages = new List <LanguageKey>(); var page = await _pageRepository.GetOneAsync(pageId); var pageLanguages = await _pageRepository.GetLanguageKeys(pageId); languages.AddRange(pageLanguages); if (page.Builder != null && page.Builder.Sections != null) { foreach (var section in page.Builder.Sections) { switch (section.ConstructionType) { case SectionContructionType.Standard: var standardLanguages = await _standardRepository.GetLanguageKeysAsync(section.ComponentId); languages.AddRange(standardLanguages?.ToList()); break; case SectionContructionType.Array: var standardArrayLanguages = await _standardRepository.GetLanguageKeysAsync(section.ComponentId); languages.AddRange(standardArrayLanguages.ToList()); break; case SectionContructionType.DynamicList: var dynamicListLanguages = await _dynamicListRepository.GetLanguageKeysAsync(section.ComponentId); languages.AddRange(dynamicListLanguages.ToList()); break; case SectionContructionType.Chart: var chartLanguages = await _chartRepository.GetLanguageKeysAsync(section.ComponentId); languages.AddRange(chartLanguages.ToList()); break; } } } return(languages); }